首頁 >資料庫 >mysql教程 >沒有 GROUP BY 的 MySQL 聚合函數:為什麼以及如何?

沒有 GROUP BY 的 MySQL 聚合函數:為什麼以及如何?

DDD
DDD原創
2024-11-06 05:42:02588瀏覽

MySQL Aggregate Functions Without GROUP BY: Why and How?

沒有 GROUP BY 的 MySQL 聚合函數:為什麼以及如何?

與其他關係型資料庫管理系統 (RDBMS) 不同,當聚合函數出現在不帶 GROUP BY 子句的 SELECT 清單中,MySQL 允許這樣做。這種行為引起了開發人員的興趣,導致了以下查詢:

為什麼 MySQL 允許不使用 GROUP BY 的聚合函數?

答案:

MySQL 的設計理念允許超出 SQL 標準的擴充功能。允許不帶 GROUP BY 的聚合函數就是這樣的一個擴充。

當執行像SELECT col1,col2,sum(col3) FROM tbl1 這樣的查詢時,MySQL 有效地按所有非聚合列對行進行分組(在此案例,第1 列和第2 列) 。然後,它會傳回單一不確定組的聚合函數(col3 的總和)的結果。

早期版本的 MySQL 預設允許此行為。然而,從 MySQL 5.7.5 開始,引入了 ONLY_FULL_GROUP_BY SQL 模式,以強制執行更嚴格的 SQL 合規性,並不允許使用沒有 GROUP BY 的聚合函數進行查詢。可以根據需要啟用或停用此模式。預設情況下,它在 MySQL 8.0 及更高版本中啟用。

附加說明:

  • MySQL 中處理group by 的文件提供了更多詳細資訊
  • ONLY_FULL_GROUP_BY SQL 模式有助於確保與其他RDBMS 的兼容性,並透過避免不必要的計算來提高效能。

以上是沒有 GROUP BY 的 MySQL 聚合函數:為什麼以及如何?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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