如何在 mysql 中使用 GROUP BY?
不少開發者發現,MySQL 的 GROUP BY 語句并不總是嚴格要求將 select 語句中所有的字段都包含在 GROUP BY 子句中。這究竟是怎么回事呢?
事實上,MySQL 的行為取決于 SQL_MODE 的設置。從 MySQL 5.7 開始,默認的 SQL_MODE 啟用了 ONLY_FULL_GROUP_BY 選項。當此選項啟用時,SELECT 語句中未出現在 GROUP BY 子句中的列必須在聚合函數(如 SUM、count、AVG)中使用,否則會拋出錯誤。
不過,你可以通過手動調整 SQL_MODE 設置來禁用 ONLY_FULL_GROUP_BY 選項。禁用后,MySQL 不再檢查 SELECT 語句中的列是否全部包含在 GROUP BY 子句中。
有關詳細信息,請參閱 MySQL 5.7 參考手冊:
- MySQL :: MySQL 5.7 Reference Manual :: 1.3 What Is New in MySQL 5.7