在SQL SELECT语句中,HAVING和WHERE的区别是什么?

编辑:我已经把Steven的答案标记为正确答案,因为它包含了链接上的关键信息:

当GROUP BY没有被使用时,HAVING就像一个WHERE子句

我在WHERE中看到的情况没有GROUP BY,这就是我的困惑开始的地方。当然,在你知道这一点之前,你不能在问题中指定它。


当前回答

WHERE和HAVING子句的区别:

WHERE子句和HAVING子句之间的主要区别是,WHERE用于行操作,HAVING用于列操作。

为什么我们需要HAVING从句?

我们知道,聚合函数只能在列上执行,所以不能在WHERE子句中使用聚合函数。因此,我们在HAVING子句中使用聚合函数。

其他回答

我使用HAVING来约束基于聚合函数结果的查询。例如:select * in blahblahblah group by SOMETHING having count(SOMETHING)>0

HAVING在使用聚合(例如GROUP BY)时使用。

SELECT edc_country, COUNT(*)
FROM Ed_Centers
GROUP BY edc_country
HAVING COUNT(*) > 1
ORDER BY edc_country;

WHERE和HAVING子句的区别:

WHERE子句和HAVING子句之间的主要区别是,WHERE用于行操作,HAVING用于列操作。

为什么我们需要HAVING从句?

我们知道,聚合函数只能在列上执行,所以不能在WHERE子句中使用聚合函数。因此,我们在HAVING子句中使用聚合函数。

从这里。

SQL标准要求HAVING 中的列必须只引用 中使用的GROUP BY子句或列 聚合函数

而不是应用于数据库行的WHERE子句

WHERE子句用于比较基表中的值,而HAVING子句可用于过滤查询结果集中的聚合函数的结果 点击这里!