Mysql group by之 Error 1055

 

 

统计每个班级有多少人

我按照班级名称进行分组,返回  班级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

原文地址:https://www.cnblogs.com/pjcd-32718195/p/11743907.html