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

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

Susan Sarandon
Susan Sarandon原創
2024-11-07 12:52:03755瀏覽

Why Can MySQL Use Aggregate Functions Without a GROUP BY Clause?

MySQL 聚合函數:為什麼不需要 GROUP BY 子句?

在 MySQL 中,聚合函數可以在 SELECT 清單中使用,而無需附帶GROUP BY 子句,與其他 RDBMS 產品(例如 SQL Server)不同。此行為是有意為之,為標準提供了獨特的擴展。

例如,查詢「SELECT col1,col2,sum(col3) FROM tbl1;」將成功執行,傳回一行,其中包含 col1 和 col2 的第一行值以及所有 col3 值的總和。

說明

MySQL 允許此行為,因為它認為如果沒有 GROUP BY 子句,所有行都會隱式分組在一起。因此,應用於整個表或多行的聚合函數對單一隱式組進行操作。

之前的行為

在 MySQL 版本 5.7.5 之前,此行為行為不受任何限制。但是,引入了新的伺服器 SQL 模式 ONLY_FULL_GROUP_BY,以強制更嚴格地遵守 SQL 標準。啟用後,此模式需要對所有聚合函數使用使用 GROUP BY 子句。

結論

MySQL 對不帶 GROUP BY 子句的聚合函數的獨特處理提供了資料彈性檢索。但是,了解此行為並考慮啟用 ONLY_FULL_GROUP_BY 以確保符合 SQL 標準非常重要。

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

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