数据库中having 和where有什么区别

如题所述

Having是筛选组,where是筛选记录。

可以这样理解:Having是先分组在进行筛选,而where是先筛选再进行分组。

对于有Group by子句的SQL语句,切记与Having组合使用。但不一定要有Having子句。

一般情况下分组筛选的时候用Having,其他情况下用where。

select class_num,count(*) from student where score>=85

group by class_num having count(*)>1

查询有多个学生的成绩大于等于85分班级编号。(也就是说如果一个班级的学生成绩大于85那么他就查询出来)。

where针对每一条记录进行筛选,而Having对班级的分组,count(*)>1计算多于两个的班级。
温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2018-02-27
where和having其实后面都是跟条件。区别在于:在他们后面的条件里如果有count之类的聚合函数的时候只能使用having而不能使用where。本回答被网友采纳
第2个回答  2013-09-22
HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作.
相似回答