mysql group by 问题

mysql group by 问题

sql:select t1.id,t1.deptName,t1.locAdd,count(t2.name)as emps from tbl_dept t1 left join tbl_emp t2 on t2.deptId=t1.id group by deptName order by id;
报错信息:
ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘test.t1.id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

在这里插入图片描述
查看解释是:
对于GROUP BY聚合操作,如果在SELECT中的列,没有在GROUP BY中出现,那么这个SQL是不合法的,因为列不在GROUP BY从句中,也就是说查出来的列必须在group by后面出现,否则就会报错,或者这个字段出现在聚合函数里面。

select @@GLOBAL.sql_mode;
在这里插入图片描述
select @@SESSION.sql_mode;
在这里插入图片描述
执行:
set sql_mode=‘STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION’;
在这里插入图片描述
查看select @@SESSION.sql_mode;
在这里插入图片描述

执行最上面的sql语句,即可正常显示
在这里插入图片描述
感谢大佬分享:
https://blog.csdn.net/qq_41895747/article/details/106155963?%3E?utm_medium=distribute.pc_relevant.none-task-blog-baidujs-9

https://blog.csdn.net/free377096858/article/details/91963406

你可能感兴趣的:(MySQL)