当我使用两个语句获得相同的结果时,有人能告诉我下面的上下文中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
答案 0 :(得分:1)
从功能上讲,两者是等价的。
WHERE
条款说:
过滤数据,然后汇总结果。
HAVING
条款说:
汇总数据然后过滤结果。
两者都返回相同的结果,因为过滤在用于聚合的列上。通常,HAVING
使用聚合函数;这些不在WHERE
。
通常,WHERE
子句会更快,因为聚合的数据更少。在这种情况下,您应该使用WHERE
。