不再強制 group by 中包含所有選取的字段
在早期的 mysql 版本中,所有在 select 語句中選取的字段必須在 group by 子句中指定,或者以聚合函數(shù)(如 sum() 或 count()) 的形式出現(xiàn)。然而,從 mysql 5.7 開始,默認的 sql 模式已啟用 only_full_group_by,這使得不再強制遵循這個規(guī)則。
當 only_full_group_by 為啟用狀態(tài)時,在 select 語句中選取但未在 group by 子句中指定的每個字段都必須以聚合函數(shù)的形式出現(xiàn)。否則,mysql 會拋出錯誤。
禁用 only_full_group_by
如果你需要在不使用聚合函數(shù)的情況下在 select 語句中指定不在 group by 子句中的字段,你可以手動禁用 only_full_group_by 選項。為此,請使用 set sql_mode=”no_only_full_group_by” 語句。
例如:
SET SQL_MODE="NO_ONLY_FULL_GROUP_BY"; SELECT name, COUNT(*) AS count FROM users GROUP BY name;
登錄后復(fù)制
禁用 only_full_group_by 后,不再檢查 select 語句中的字段是否出現(xiàn)在 group by 子句中。