MySQL 中的 GROUP BY 語句為什么有時不嚴格要求所有字段都包含在內?

MySQL 中的 GROUP BY 語句為什么有時不嚴格要求所有字段都包含在內?

如何在 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

? 版權聲明
THE END
喜歡就支持一下吧
點贊5 分享