MySQL中INNER JOIN关联表按group_set聚合count_hits报错如何解决
问题原因
- 聚合函数误用:你需要对
count_hits求和,应该使用SUM()聚合函数,而非统计行数的COUNT() - 字段歧义:两张表均存在
group_set字段,直接在GROUP BY中写group_set,数据库无法识别该字段所属的表,会触发语法或逻辑错误 - SELECT子句不符合聚合规范:使用
GROUP BY时,SELECT后仅允许出现GROUP BY指定的分组字段、聚合函数,直接写*查询全量字段不符合SQL规范,MySQL默认开启的ONLY_FULL_GROUP_BY模式会直接拦截该类写法
修正方案
正确SQL示例(按ads_users表的group_set分组)
SELECT ads_users.group_set, SUM(ads_users_tracking.count_hits) AS total_count_hits FROM ads_users_tracking INNER JOIN ads_users ON ads_users.id_tracking = ads_users_tracking.userid_track_code GROUP BY ads_users.group_set
补充说明
- 如果你需要查询group_set关联的其他维度字段,请将对应字段同时添加到SELECT子句和GROUP BY子句中
- 若执行后求和结果不符合预期,可以先移除聚合逻辑和GROUP BY,单独执行JOIN关联查询,核对关联结果是否存在数据重复/缺失的问题,排除关联条件匹配错误的影响
内容的提问来源于stack exchange,提问作者code
相关产品推荐
相关产品推荐

