控制对于 GROUP BY 子句的处理方式
在默认情况下,MySQL 允许在 SELECT 查询中利用 GROUP BY 子句时,对于不在 GROUP BY 子句中的非聚合列进行隐式处理,可能导致意外的结果
在 ONLY_FULL_GROUP_BY 关闭的情况下,MySQL可能会随意选择一行来代表每个分组,而不是严酷按照 SQL 尺度进行利用,如下:
this is incompatible with sql_mode=only_full_group_by
复制代码
截图如下:
对此设置为ONLY_FULL_GROUP_BY 模式
-- 开启 ONLY_FULL_GROUP_BY 模式
SET sql_mode = 'ONLY_FULL_GROUP_BY';
-- 查询每个学生的平均成绩
SELECT name, AVG(salary) AS avg_salary FROM employees GROUP BY name;