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