mysql 使用group by报错 sql_mode=only_full_group_by

本文详细解析了在MySQL中ONLY_FULL_GROUP_BY模式的作用及其带来的变化。在该模式下,使用GROUP BY进行数据分组时,所有未使用聚合函数的列都必须出现在GROUP BY子句中,否则将引发错误。文章通过一个具体的SQL查询示例,展示了如何正确地调整查询以符合ONLY_FULL_GROUP_BY模式的要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql 开启only_full_group_by模式,该模式下使用mysql老版本的写法取group by分组数据会报错,报错如下:
`Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘wenming-bj-mtg.comments.organization_id’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

时间: 0s`
在这里插入图片描述

ONLY_FULL_GROUP_BY这个配置启用的是 “严格ANSIsql 规则”,严格ANSI sql 规则要求在group by的时候,没有聚合的列,在group by的时候,必须全部包含在group by 的字段中。

在不关闭ONLY_FULL_GROUP_BY模式的情况下,将没有使用聚合函数的列,接在需要group by分组的字段后面,sql如下:

SELECT obj_id, area_id, organization_id, stars FROMcommentsWHEREarea_3= 2424 ANDtype= 2 ANDenabled= 1 ANDcreated_at>= '2020-05-02 00:00:00' ANDcreated_at<= '2020-07-22 16:00:00' GROUP BY obj_id,organization_id,area_id,stars

在这里插入图片描述
这样就可以了,如果对您有帮助,点个👍哈。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值