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中文網其他相關文章!