概述
HAVING 子句在 MySQL 中主要用于过滤由 GROUP BY 语句聚合后的记录。
它类似于 WHERE 子句,但是 WHERE 用于在数据分组前进行过滤,
HAVING 用于在数据分组后进行过滤。
HAVING 子句通常与聚合函数(如 SUM(), COUNT(), AVG(), MAX(), 和 MIN())一起使用
示例
sc表 | ||
sno | cno | score |
s001 | c001 | 79 |
s001 | c002 | 83 |
s001 | c003 | 59 |
s002 | c001 | 81 |
s002 | c002 | 73 |
s003 | c001 | 82 |
s003 | c002 | 82 |
s004 | c001 | 61 |
查询平均成绩大于70 分的的学号和平均成绩;
select avg(score),sno from sc group by sno having avg(score)>'70';
+------------+------+
| avg(score) | sno |
+------------+------+
| 73.6667 | s001 |
| 77.0000 | s002 |
| 82.0000 | s003 |
+------------+------+
注意事项
- HAVING 子句必须跟在 GROUP BY 子句之后。
- HAVING 子句可以包含聚合函数,而 WHERE 子句不能。
- HAVING 子句可以用于过滤聚合后的结果,而 WHERE 子句用于过滤原始数据。