数据库中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有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

MySQL Query 中的 HAVING 和 WHERE 有啥区别?

SQL中where与having的区别

数据库中where与having区别~~~

数据库中where与having区别

在oracle中where 子句和having子句中的区别

Where和Having的区别