这是我的查询:
SELECT u_id, created_date,
COUNT(u_id) AS count_total
FROM table
WHERE statement='this'
GROUP BY DAY(created_date)
ORDER BY created_date ASC
我得到的错误是:
查询错误:SELECT 列表的表达式 #1 不在 GROUP BY 子句中并且包含非聚合列。
我已阅读 this post但我不知道如何让它工作,因为现在问题似乎是添加了 DAY。
我尝试将 SELECT
语句更改为:
SELECT u_id, ANY_VALUE(created_date) as test_date
但这没有用。
最佳答案
mysql 5.7 改变了 group by 的默认工作方式。 (我假设您的答案是 5.7。)
基本上,因为 u_id 有多个可能的值,所以 mysql 不知道您想要哪一个。从 5.7 开始,使用默认设置,它将抛出您所看到的错误。您引用的答案有一个很好的图表,请再次查看。让查询返回结果的一种方法是:
SELECT ANY_VALUE(u_id), ANY_VALUE(created_date),
COUNT(u_id) AS count_total
FROM table
WHERE statement='this'
GROUP BY DAY(created_date)
ORDER BY created_date ASC
mysql手册页也有很好的解释https://dev.mysql.com/doc/refman/5.7/en/miscellaneous-functions.html#function_any-value
关于MySQL 与 GROUP BY 语句发生错误(查询错误 : Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48392082/