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

开启only_full_group_by时如何按日期字段的月份对表记录分组

问题原因

你的SQL报错不是only_full_group_by不允许按月分组汇总,问题出在ORDER BY子句引用了未参与分组也未被聚合的原始date字段,不符合only_full_group_by的校验规则。

正确实现写法

最简写法(使用别名分组排序)

SELECT SUM(`payment`) AS total, DATE_FORMAT(`date`, '%Y-%m') AS month
FROM `my_table`
GROUP BY `month`
ORDER BY `month` DESC

这里GROUP BY直接使用SELECT中定义的month别名,ORDER BY同样使用分组后的month字段,完全符合only_full_group_by的要求,运行后就能得到你预期的按月汇总结果。

不使用别名的等价写法

SELECT SUM(`payment`) AS total, DATE_FORMAT(`date`, '%Y-%m') AS month
FROM `my_table`
GROUP BY DATE_FORMAT(`date`, '%Y-%m')
ORDER BY DATE_FORMAT(`date`, '%Y-%m') DESC

按年、月函数分组的正确写法

你之前尝试GROUP BY MONTH(date), YEAR(date)报错同样是因为ORDER BY用了原始date字段,调整后也可以正常运行:

SELECT SUM(`payment`) AS total, CONCAT(YEAR(`date`), '-', LPAD(MONTH(`date`), 2, '0')) AS month
FROM `my_table`
GROUP BY YEAR(`date`), MONTH(`date`)
ORDER BY YEAR(`date`) DESC, MONTH(`date`) DESC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 15:45:00