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

浙公网安备 33010602011771号