首頁  >  文章  >  資料庫  >  為什麼MySQL聚合函數可以在沒有GROUP BY子句的情況下使用?

為什麼MySQL聚合函數可以在沒有GROUP BY子句的情況下使用?

DDD
DDD原創
2024-11-05 19:45:02608瀏覽

Why Can MySQL Aggregate Functions Be Used Without a GROUP BY Clause?

MySQL 聚合函數:GROUP BY 困境

在MySQL 中,聚合函數可以在SELECT 語句中使用,而無需明確定義GRO BY子句,而SQL Server 等其他資料庫系統可能會拋出錯誤。這種行為引發了為什麼 MySQL 允許執行此類查詢的問題。

MySQL 設計

MySQL 允許 SELECT 清單中的聚合函數不帶 GROUP BY 子句作為擴充符合 SQL 標準。如果沒有分組,資料庫會假定一個不確定的群組,並且可以為該群組選擇任何名稱值。此行為可以更輕鬆地聚合整個表中的資料。

範例查詢

考慮查詢:

SELECT name, MAX(age) FROM t;

沒有GROUP BY子句中,MySQL 傳回單一行,其中包含整個資料表中遇到的第一個名稱值和最大年齡值。

ONLY_FULL_GROUP_BY 設定

MySQL 版本 5.7.5 及更高版本引入了 ONLY_FULL_GROUP_BY 設定,該設定控制不帶 GROUP 子句的聚合函數的處理。啟用此設定要求任何聚合函數使用都存在 GROUP BY 子句。

結論

MySQL 允許不使用 GROUP BY 子句的聚合函數的行為為以下操作提供了彈性:聚合整個表的資料。但是,ONLY_FULL_GROUP_BY 設定可以強制更嚴格地遵守 SQL 標準,以實現更受控的聚合。

以上是為什麼MySQL聚合函數可以在沒有GROUP BY子句的情況下使用?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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