You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL执行SQL报错1140:无GROUP BY聚合查询含非聚合列如何解决

报错引发原因

该错误是MySQL开启ONLY_FULL_GROUP_BY SQL模式后的强制校验触发的,规则要求:

  • 只要查询中使用了COUNT()/SUM()/MAX()这类聚合函数,如果没有添加GROUP BY子句,整个查询的所有结果会被聚合为1行返回,此时SELECT列表中只能出现被聚合函数包裹的字段,不允许存在普通的非聚合字段。
  • 你提交的SQL中,SELECT列表同时包含了vp.visitor_id、vp.name、vp.email三个普通非聚合字段,以及count(n.notification_id)聚合字段,且未添加GROUP BY指定分组规则,数据库无法判断多份用户数据的统计结果要如何合并展示,因此抛出1140错误。

修复方法

如果你的需求是统计每个符合条件的用户的0状态通知数量,只需要在WHERE条件后增加GROUP BY子句,把SELECT列表里的非聚合字段都加入分组规则即可:

SELECT  vp.visitor_id , vp.name ,vp.email ,count(n.notification_id) 
from visitor_profile vp join notification n on n.receiver_id = vp.visitor_id 
where n.status = 0 
  and vp.visitor_id in  (66578,66579)
GROUP BY vp.visitor_id, vp.name, vp.email;

如果visitor_id是visitor_profile表的主键,仅写GROUP BY vp.visitor_id也可以正常执行,主键可唯一确定同一行的其他字段值。

内容的提问来源于stack exchange,提问作者jibin james

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:48:01