更新到MySQL 5.7后的GROUP BY日期错误

时间:2019-07-01 17:51:35

标签: group-by mysql-5.7

我有一个简单的脚本,可以计算潜在客户并按月和年显示计数。在我升级到MySQL 5.7之前,它运行良好。现在我收到此错误:

运行查询时出错[SELECT列表的表达式#3不在GROUP BY子句中,并且包含未聚合的列'form.form_25.submission_date',该列在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by]

不兼容

我的查询是:

SELECT YEAR(`submission_date`) AS yr, 
MONTH(`submission_date`) AS mth,
DATE_FORMAT(`submission_date`,'%M %Y') AS display_date, 
COUNT(*) AS leadcount
FROM form_25 
WHERE `submission_date` >= CURRENT_DATE - INTERVAL 1 YEAR
GROUP BY yr,mth
ORDER BY yr DESC, mth DESC

我意识到这是因为only_full_group_by已启用,但是我不想禁用它。

我已经研究了这个问题,但是似乎所有建议的解决方案都是关于按唯一列进行分组。在这种情况下,这不是解决方案,因为按我的主列分组不能正确显示潜在客户计数。

在此先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

好的,我想出了一个足以满足我的目的的解决方案。我发现只有在包含此行时才会发生错误:

DATE_FORMAT(`submission_date`,'%M %Y') AS display_date,

因此,我删除了这一行,并使用yr和mth别名在PHP中重新创建了display_date变量。