GROUP BY语句的MySQL错误(查询错误:SELECT列表的表达式#1不在GROUP BY子句中并包含非聚合列)

时间:2018-01-22 23:51:28

标签: mysql group-by

这是我的疑问:

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

但这没效果。

2 个答案:

答案 0 :(得分:0)

mysql 5.7改变了默认方式组的工作原理。 (我假设你的答案是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

答案 1 :(得分:0)

请确保您的字段 created_date 不包含 null 空格。因此, DAY 功能可以正常运行。 通过此语句检查您的字段,并查看结果中是否有空格或空格:



SELECT DISTINCT created_date FROM table;