统计每个班级有多少人
我按照班级名称进行分组,返回 班级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;
加不加聚合函数都可以,根据需求进行选择
文章转载自:https://blog.csdn.net/qq_34581118/article/details/78228262