條款
回答
具有聚集功能,例如
SELECT *
FROM foo
GROUP BY baz
HAVING COUNT(*) > 8
帶子句是否用groupby子句檢查條件? – Pearl
如果您發佈代碼,XML或數據樣本,**請**在文本編輯器中突出顯示這些行,然後單擊編輯器工具欄上的「代碼樣本」按鈕(「{}」)以精確地設置格式並對其進行語法突出顯示! –
它們指定組或聚合的搜索條件。但區別在於HAVING只能用於SELECT語句。 HAVING通常用在GROUP BY子句中。當不使用GROUP BY時,HAVING的行爲如同WHERE子句。具有子句基本上只在查詢中與GROUP BY函數一起使用,而WHERE子句在查詢中屬於GROUP BY函數的一部分之前應用於每一行。
HAVING過濾器分組元素, WHERE過濾未分組元素。
實施例1:
SELECT col1, col2 FROM table
WHERE col1 = @id
實施例2:
SELECT SUM(col1), col2 FROM table
GROUP BY col2
HAVING SUM(col1) > 10
由於HAVING條件只能在第二示例中發生之後分組被應用,則不能重寫它作爲一個WHERE條款。
例3:
SELECT SUM(col1), col2 FROM table
WHERE col1 = @id
GROUP BY col2
HAVING SUM(col1) > 10
演示瞭如何使用這兩個WHERE和HAVING在一起:
表數據首先由col1 = @id
過濾,然後將過濾後的數據進行分組 然後分組數據通過SUM(col1) > 10
WHERE filters rows before they are grouped in GROUP BY clause
while HAVING filters the aggregate values after GROUP BY takes place
HAVING
指定在SELECT
語句中使用的東西執行搜索。
換句話說。
HAVING
適用於組。
WHERE
適用於行。
把它看作是發生過濾的地方。
當您指定一個where
子句時,將輸入行過濾到您的聚合函數(即:我只想獲得居住在特定城市的人的平均年齡)。當指定having
約束時,您指定您只希望平均值的某個子集。 (我只希望看到城市與70年或以上的平均年齡。)
如果沒有GROUP BY,沒有任何區別(但有看起來很奇怪當時)
隨着GROUP BY
HAVING
是用於在聚合試驗條件(MAX,SUM,COUNT等)HAVING column = 1
相同WHERE column = 1
(上column
沒有聚集體)WHERE COUNT(*) = 1
不allowe d。HAVING COUNT(*) = 1
允許
- 1. 條款
- 2. 服務條款和緩存條款
- 3. Android SQLite更新條款與條款
- 4. 條款聲明內部條款
- 5. 不能條款
- 6. DB2與條款
- 7. 當在條款
- 8. Asp:EntityDataSource:在條款
- 9. 在條款
- 10. 在SUM條款
- 11. MS Access條款
- 12. PHP finally條款
- 13. 返回條款
- 14. Unifiable Prolog條款
- 15. Pyspark:在條款
- 16. 條紋付款
- 17. 的條款
- 18. 條款ORDER BY
- 19. 當條款
- 20. 有條款......?
- 21. AREL:用條款
- 22. LinqToSQL在條款
- 23. 在條款
- 24. 在條款
- 25. 用條款
- 26. 除外條款
- 27. 與條款或
- 28. 從條款
- 29. MySQL條款時
- 30. jdbc.SQLServerException對條款
完全重複,男人,不要偷懶! –
Oki。感謝您的建議。 – Pearl