首頁 > 資料庫 > mysql教程 > 使用HAVING而不使用GROUP BY是標準SQL嗎?

使用HAVING而不使用GROUP BY是標準SQL嗎?

DDD
發布: 2024-12-31 00:12:26
原創
177 人瀏覽過

Is Using HAVING Without GROUP BY Standard SQL?

HAVING without GROUP BY:標準SQL 一致性

引發問題中呈現的查詢結構:

SELECT *
FROM Book
HAVING NumberOfPages = MAX(NumberOfPages)
登入後複製

引發問題中呈現的查詢結構:

。擔心其根據標準SQL 的有效性。此查詢使用 HAVING 子句,但沒有對應的 GROUP BY 子句。

標準 SQL 定義,如果 HAVING 子句的搜尋條件符合特定條件,則 HAVING 子句有效。這些條件包括在功能上依賴 GROUP BY 子句中引用的欄位或外部參考。

在給定的查詢中,沒有 GROUP BY 子句。因此,搜尋條件 NumberOfPages = MAX(NumberOfPages) 不符合定義的條件,因為 NumberOfPages 對任何特定群組沒有明確的函數依賴性。
SELECT *
FROM Book
GROUP BY BookId
HAVING NumberOfPages = MAX(NumberOfPages)
登入後複製

為了符合標準,查詢需要修改為包含GROUP BY 子句,例如:

在此修改後的查詢中,GROUP BY 子句對資料進行分區通過BookId,為每本書建立不同的群組。 HAVING 子句現在變得有效,因為它對這些群組進行操作,檢查是否有任何群組包含具有最大 NumberOfPages 的行。 需要注意的是,某些資料庫系統(例如 MySQL)可能允許此類查詢,而無需GROUP BY 子句,但此行為被視為非標準擴充。

以上是使用HAVING而不使用GROUP BY是標準SQL嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板