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

MySQL统计2020年各月referrer数量时报Error 1055错误如何解决?

MySQL Error 1055报错原因说明

触发该报错的核心原因是当前MySQL环境开启了sql_mode=only_full_group_by校验规则,该规则的要求是:SQL经过GROUP BY分组后,所有在SELECT、ORDER BY、HAVING子句中出现的非聚合字段/表达式,必须已经包含在GROUP BY子句中,否则就会抛出1055错误。

你虽然已经对齐了SELECT和GROUP BY子句的内容,但忽略了ORDER BY子句同样需要遵守上述规则,当前SQL的问题具体如下:

  • 你GROUP BY的分组维度是MONTH(day)(按月份聚合)和referrer,聚合后每一行是「2020年某月份+某来源」的统计结果,原始表的day字段是具体日期,不在GROUP BY的维度中,也没有用MAX、MIN等聚合函数包裹
  • ORDER BY子句直接使用了原始day字段排序,同一个分组下可能存在多个不同的day值,MySQL无法确定排序的依据,因此触发报错。

修正方案

将ORDER BY子句中的day替换为分组用的MONTH(day)即可,修正后的语句如下:

SELECT MONTH(day) MONTH, referrer, COUNT(referrer) AS cumulative_pageviews
FROM weblogs
WHERE YEAR(day) >= '2020'
GROUP BY MONTH(day), referrer
ORDER BY MONTH(day), referrer;

内容的提问来源于stack exchange,提问作者SQL N3rd

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:15:03