数据库中having 和where有啥区别
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库中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计算多于两个的班级。 参考技术A where和having其实后面都是跟条件。区别在于:在他们后面的条件里如果有count之类的聚合函数的时候只能使用having而不能使用where。 参考技术B HAVING 只会在检索出所有记录之后才对结果集进行过滤. 这个处理需要排序,总计等操作.
以上是关于数据库中having 和where有啥区别的主要内容,如果未能解决你的问题,请参考以下文章