HAVING
和 WHERE
都是用來篩選數據的,但它們的應用場景有所不同。
WHERE:用于篩選行數據,通常在
FROM
子句之后執行。它在分組操作 (GROUP BY
) 之前應用,用來篩選出符合條件的記錄。示例:
SELECT name, age FROM employees WHERE age > 30;
HAVING:用于篩選分組后的結果,通常在
GROUP BY
子句之后執行。它是在GROUP BY
聚合計算后,對每一個分組結果進行篩選。示例:
SELECT department, COUNT(*) FROM employees GROUP BY department HAVING COUNT(*) > 5;
主要區別:
WHERE
作用在 行 級別,適用于篩選單行記錄的數據。HAVING
作用在 組 級別,適用于篩選聚合后的結果。
總結來說,WHERE
用來在 GROUP BY
之前篩選數據,而 HAVING
用來在分組之后篩選聚合結果。