3-3
- 使用COUNT函数等对表中数据进行汇总操作时,为其指定条件的不是WHERE子句,而是HAVING子句
- 聚合函数可以在SELECT子句、HAVING子句和ORDER BY子句中使用
- HAVING 子句要写在 GROUP BY 子句 之后
- WHERE 子句用来指定数据行的条件,HAVING子句用来指定分组的条件
使用HAVING 子句时SELECT语句的顺序
SELECT
FROM
WHERE
GROUP BY
HAVING
HAVING 子句中能够使用的 3 种要素如下:
- 常数
- 聚合函数 (COUNT等)
- GROUP BY 子句中指定的列名(即聚合键)
**
- 通常情况下,为了得到相同的结果,将条件写在 WHERE 子句中要比写在 HAVING 子句中的处理速度更快,返回结果所需的时间更短
- 通过WHERE 子句指定条件时,由于排序之前就对数据进行了过滤,因此能够减少排序的数据量
- HAVING 子句是在排序之后才对数据进行分组的,因此与在WHERE 子句中指定条件比起来,需要排序的数据量就会多得多
