HAVING和WHERE子句之间的区别

时间:2017-05-09 11:01:40

标签: sql sql-server ms-access

当我使用两个语句获得相同的结果时,有人能告诉我下面的上下文中HAVING和WHERE子句之间的区别

SELECT Table1.DEPT, Sum(Table1.SALARY) AS Comp
FROM Table1
GROUP BY Table1.DEPT
HAVING DEPT="HR"

这与WHERE子句有关。

SELECT Table1.DEPT, Sum(Table1.SALARY) AS Comp
FROM Table1
WHERE DEPT="HR"
GROUP BY Table1.DEPT

1 个答案:

答案 0 :(得分:1)

从功能上讲,两者是等价的。

WHERE条款说:

  

过滤数据,然后汇总结果。

HAVING条款说:

  

汇总数据然后过滤结果。

两者都返回相同的结果,因为过滤在用于聚合的列上。通常,HAVING使用聚合函数;这些不在WHERE

通常,WHERE子句会更快,因为聚合的数据更少。在这种情况下,您应该使用WHERE