我有一个简单的脚本,可以计算潜在客户并按月和年显示计数。在我升级到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已启用,但是我不想禁用它。
我已经研究了这个问题,但是似乎所有建议的解决方案都是关于按唯一列进行分组。在这种情况下,这不是解决方案,因为按我的主列分组不能正确显示潜在客户计数。
在此先感谢您的帮助。
答案 0 :(得分:0)
好的,我想出了一个足以满足我的目的的解决方案。我发现只有在包含此行时才会发生错误:
DATE_FORMAT(`submission_date`,'%M %Y') AS display_date,
因此,我删除了这一行,并使用yr和mth别名在PHP中重新创建了display_date变量。