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