不帶GROUP BY 的HAVING:標準SQL 合規性
標準SQL 中是否可以存在沒有GROUP BY 子句的HAVING 子的HAVING 子句?依照標準,使用HAVING子句時需要GROUP BY子句。標準規定 HAVING 子句中引用的每一列必須在功能上依賴 GROUP BY 子句中的列或外部引用。
但是,MySQL 允許不帶 GROUP BY 子句的 HAVING 子句,並且它在特定條件下按預期運行:當第一行具有指定列的最大值時。
為了符合標準,應修改查詢以包含GROUP BY 子句。例如,如果我們要檢索具有最大頁數的行,則更正後的查詢將為:
SELECT * FROM Book GROUP BY BookID HAVING NumberOfPages = MAX(NumberOfPages)
此查詢將按BookID 對行進行分組,並將HAVING 條件應用於每個組,傳回僅包含每組中頁數最多的行。
以上是標準 SQL 中 HAVING 子句可以在沒有 GROUP BY 子句的情況下存在嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!