SQL之WHERE,GROUP,HAVING,ORDER BY

①WHERE 是对数据集进行筛选

②GROUP BY 是分组查询,是对结果集进行分组, 一般 GROUP BY 是和聚合函数配合使用:

GROUP BY 有一个原则,就是 SELECT后面的所有列中,没有使用聚合函数的列,必须出现在 group by 后面(重要),如下:

SELECT column_A,column_B,SUM(column_C) FROM Orders
GROUP BY column_A,column_B; 

③HAVING 用于对分组后的结果进行筛选.(即HAVING的前提是分组)

④ORDER BY 是对结果集进行排序

详解:

1.WHERE 必须在GROUP BY 之前

2.GROUP BY 必须在HAVING 之前.

3.HAVING只能用在GROUP BY 之后,对分组后的结果进行筛选.(即使用HAVING 的前提是分组)

举例:

当一个查询语句同时出现了WHERE ,GROUP BY, HAVING ,ORDER BY 时,执行顺序和编写顺序是select--from--where--group--having--select--order by:

1.执行WHERE子句对全表数据做筛选,返回第一个结果集

2.针对第一个结果集使用GROUP BY分组,返回第二个结果集

3.针对第二个结果集使用HAVING进行筛选,返回第三个结果集

4.针对第三个结果集中的每1组数据执行SELECT XX,有几组就执行几次,返回第四个结果集

5.对第四个结果集使用OEDER BY进行排序

WHERE 与 HAVING 的区别:

WHERE子句中不能使用分组函数(!!!)

可以在HAVING子句中使用分组函数

WHERE的执行顺序在HAVING之前,因为WHERE子句在GROUP BY子句之前,HAVING 子句在GROUP BY 之后

HAVING 子句是对分组结果进行筛选,所以使用HAVING的前提是使用了GROUP BY

猜你喜欢

转载自www.cnblogs.com/yaoze2018/p/11266919.html