我已經學會了使用HAVINGwhen I useGROUP BY代替WHERE子句,并且從未遇到過任何問題。今天我在 w3schools.com 的 SQL 學習頁面上看到了這個:
SELECT Employees.LastName, COUNT(Orders.OrderID) AS NumberOfOrders
FROM Orders
INNER JOIN Employees ON Orders.EmployeeID = Employees.EmployeeID
WHERE LastName = 'Davolio' OR LastName = 'Fuller'
GROUP BY LastName
HAVING COUNT(Orders.OrderID) > 25;
- 為什么這應該起作用?
- 我什么時候應該使用這個?
uj5u.com熱心網友回復:
WHERE和之間的區別HAVING是您何時應該使用一個與另一個,甚至兩者結合使用的核心。
HAVING使您能夠根據聚合值過濾結果集。在您的示例中,您將查詢回傳的資料限制為聚合 ( COUNT) 大于 25 的那些行WHERE。由于語法限制,無法在 a 中定義此類謂詞。
該WHERE關鍵字用于定義基于離散(非聚合)值的查詢謂詞。在您的示例中,WHERE基于 LastName 和 FirstName 值限制結果。
它們能夠作為有效的語法相互結合使用,因為它們執行不同的(盡管非常相似)操作,而這些操作無法單獨完成。至于為什么要使用它,這只是需要基于聚合和離散條件限制結果集的問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/371550.html
標籤:sql sql-server 查询语句
