Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated

记录开发问题

今天在本地MySQL上跑项目没问题,在服务器上运行查询时候报错

错误代码: 1055
Expression #2 of SELECT list is not in GROUP BY clause and contains nonaggregated column
‘m.TYPE’ which is not functionally dependent on columns in GROUP BY clause; this is
incompatible with sql_mode=only_full_group_by

思考:

应该是因为两个MySQL版本或设置的差异导致的。

原因:

MySQL5.7之后,sql_mode中ONLY_FULL_GROUP_BY模式默认设置为打开状态。此模式下,要求select的所有列(除了聚合的字段以外)都要在group by中。

解决方法:

找到原因解决起来就简单了。

方法一:

    把select的列都加到group by中。

方法二:

把不需要group by的字段给屏蔽掉。这里就用到MySQL的一个方法any_value()
使用any_value(m.id) AS id的方式跳过group by的检查。

方法三:

修改MySQL的配置文件,我觉得为了个sql修改配置,这方法不太行,不推荐,就不贴修改配置的代码了。

想了解详细原因的参考:点击这里 ,有大神给出详解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值