mysql遇见Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggre

同一个程序,运行在dev和prod不同环境里,同一个接口竟然一个正常,一个报错500,但是数据库的数据都一样的,搜了很久,终于在一篇文章里面解决了:
问题出现的原因:
MySQL 5.7.5及以上功能依赖检测功能。如果启用了ONLY_FULL_GROUP_BY SQL模式(默认情况下),MySQL将拒绝选择列表,HAVING条件或ORDER BY列表的查询引用在GROUP BY子句中既未命名的非集合列,也不在功能上依赖于它们。(5.7.5之前,MySQL没有检测到功能依赖关系,默认情况下不启用ONLY_FULL_GROUP_BY。有关5.7.5之前的行为的说明,请参见“MySQL 5.6参考手册”。)

因为这个接口刚好用到了这个groupBy,所以就报错了,因此我选第一种方法解决:
打开navcat,

用sql查询:

select @@global.sql_mode

查询出来的值为:

ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

去掉ONLY_FULL_GROUP_BY,重新设置值。

set @@global.sql_mode 
='STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION';

如图:
在这里插入图片描述
第二种方法我没试过,但是我把原文链接贴出来:
https://www.pianshen.com/article/460796708/

猜你喜欢

转载自blog.csdn.net/weixin_42260782/article/details/112906371