2017-05-09 147 views
0

誰能告訴我之間的差異HAVING和WHERE中,當我得到同時使用相同的結果,這正好與WHERE子句中的語句差異WHERE子句

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

以下方面的條款。

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

選中此項:http://stackoverflow.com/questions/287474/whats-the-difference-between-having-and-where – Toster

+0

如果您忽略group by子句,您將得到不同的結果 – apomene

回答

1

在功能上,兩者是等價的。

WHERE子句說:

過濾數據然後彙總結果。

HAVING子句說:

彙總數據然後篩選結果。

兩者都返回相同的結果,因爲過濾位於用於聚合的列上。通常,HAVING使用聚合函數;這些不允許在WHERE

一般來說,WHERE子句將會更快,因爲更少的數據被彙總。在這種情況下,您應該使用WHERE