首頁 >資料庫 >mysql教程 >標準 SQL 中 HAVING 子句可以在沒有 GROUP BY 子句的情況下存在嗎?

標準 SQL 中 HAVING 子句可以在沒有 GROUP BY 子句的情況下存在嗎?

Barbara Streisand
Barbara Streisand原創
2025-01-05 09:25:40218瀏覽

Can a HAVING Clause Exist Without a GROUP BY Clause in Standard SQL?

不帶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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn