通常是sql写的不标准导致的,可以发下sql看看,或者可以改sql_mode解决但是不太建议
1 个赞
就是你写的SQL查询的字段除使用sum、max、min等函数的字段之外的字段没有出现在group by后面的字段里
1 个赞
聚合之外的查询字段需要在GROUP BY里面
这个有个参数开关,mysql也有
SET GLOBAL sql_mode = (SELECT REPLACE(@@sql_mode, ‘ONLY_FULL_GROUP_BY’, ‘’));
可以临时改一下
sql_mode,可以直接改的,但是最好看看SQL语句,是出于什么原因,写多了查询字段,这种影响结果集精确性的。
新部署提示开发改,迁移升级兼容的就改sql_mode
检查SQL语法正确性
建议把语句发出来看看,group by里要包含非聚合之外的所有字段
sql写的有问题,select后面的字段如果不是在聚合函数里面,那就需要在group by 后
问题如提示。
show session variables like ‘%sql_mode%’;
set sql_mode=“ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION”;