统计每个班级有多少人
我按照班级名称进行分组, 返回 班级 id 和班级 name 出现了如下错误
报错的查询语句如下
-- 统计每个班级有多少人
select c.id,c.name,count(*) from class c left join user u on c.id=u.c_id group by c.name;
报异常的原因
错误原因:
在 MySQL5.7 之后, sql_mode 中默认存在 ONLY_FULL_GROUP_BY,SQL 语句未通过 ONLY_FULL_GROUP_BY 语义检查所以报错.
ONLY_FUll_GROUP_BY 的意思是:
对于 GROUP BY 聚合操作, 如果在 SELECT 中的列, 没有在 GROUP BY 中出现, 那么这个 SQL 是不合法的, 因为列不在 GROUP BY 语句中, 也就是说查出来的列必须是 GROUP BY 之后的字段, 或者这个字段出现在聚合函数里面.
GROUP BY 正确用法
MySQL 的 group by 语法为:
select 选取分组中的列 + 聚合函数 from 表名 group by 分组的列
如下是正确语句的实例
select a,count(*) from emp group by a,b;
加不加聚合函数都可以, 根据需求进行选择
文章转载自:
来源: http://www.bubuko.com/infodetail-3258630.html