查询数据
having 子句
having的本质和where一样,是用来进行数据条件筛选。
having与where的区别:
1.类型:
“Where”是一个约束声明,在查询数据库的结果返回之前对数据库中的查询条件进行约束,即在结果返回之前起作用,且where后面不能使用“聚合函数”;
“Having”是一个过滤声明,所谓过滤是在查询数据库的结果返回之后进行过滤,即在结果返回之后起作用,并且having后面可以使用“聚合函数”。
2.使用的角度:
where后面之所以不能使用聚合函数是因为where的执行顺序在聚合函数之前,如下面sql语句:
mysql> select * from data_groupby;
+----+------+------+-------+
| id | name | sex | score |
+----+------+------+-------+
| 1 | 静静 | 男 | 78 |
| 2 | 何萍 | 女 | 98 |
| 1 | 李艾 | 女 | 96 |
| 2 | 萧何 | 男 | 99 |
| 3 | 雯雯 | 女 | 82 |
| 1 | 张少 | 男 | 90 |
+----+------+------+-------+
6 rows in set (0.00 sec)
-- 查询总分大于200的班级。。。错误提示:无效的使用!聚合函数。。为什么?因为where执行顺序在聚合函