group by的严格模式

mysql从5.7以后,默认开启group by的严格模式。如果错误号是1055,处理方式可以2种,
1)更改my.cnf(windows下是my.ini)中的sql_mode参数,去掉:only_full_group_by。
2)修改SQL语句,查询的列和group by的列,需要一致(主键可以忽略、用了函数的列可以忽略)

方法3:使用any_value函数抑制group by 的ONLY_FULL_GROUP_BY

select id,name,class
from student 
group by id;

【执行失败】

改为

select id,any_value(name),any_value(class)
from student 
group by id;

【执行成功,但是要注意使用any_value函数后,原本的列名会被修改为any_value(name),这样在SpringBoot项目中映射时不会报错,但是结果会错乱。】
所以,最好在使用any_value函数后再给列起个别名如:

select id,any_value(name) name ,any_value(class) class
from student 
group by id;



原文链接:https://blog.csdn.net/wuxianbing2012/article/details/106764957

posted @ 2022-03-08 15:28  星云惊蛰  阅读(680)  评论(0)    收藏  举报