首頁 >資料庫 >mysql教程 >MySQL為什麼不用GROUP BY就可以使用聚合函數?

MySQL為什麼不用GROUP BY就可以使用聚合函數?

DDD
DDD原創
2024-11-06 11:07:02958瀏覽

Why Can I Use Aggregate Functions Without GROUP BY in MySQL?

MySQL 對聚合函數的獨特處理,無需GROUP BY

在MySQL 中,與其他關聯式資料庫管理系統不同,可以使用聚合函數在SELECT 清單中而不指定GROUP BY 子句。這種行為在熟悉更具限制性的 DBMS 平台的開發人員中引起了疑問。

MySQL 基本原理

MySQL 在設計上允許這種靈活性,認為它是對 SQL 的有價值的擴展標準。當在沒有 GROUP BY 的情況下使用聚合函數時,傳回的結果表示包含整個表計算的聚合值的單行。這在需要匯總資訊而不需要分組的情況下非常有用。

範例

例如,考慮查詢:

SELECT col1, col2, SUM(col3) FROM tbl1;

如果沒有GROUP BY,MySQL 將其解釋為單一群組並提供以下輸出🎜>如果沒有GROUP BY,MySQL 會將其解釋為單一群組並提供以下輸出:

col1    col2    SUM(col3)
-------------------------
(First row value of col1)    (First row value of col2)    (Sum of all col3 values)

ONLY_FULL_GROUP_BY 的限制

MySQL 處理聚合的寬鬆方法引入了不帶GROUP BY 的函數,並將ONLY_FOFF_GRO_BY BY_FOFF。隨著MySQL版本5.7.5的發布,預設啟用ONLY_FULL_GROUP_BY,這限制了這種行為。

啟用ONLY_FULL_GROUP_BY可確保聚合函數只能與GROUP BY子句結合使用,如果遇到沒有它的查詢。此變更符合 SQL 標準並促進資料一致性。

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

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