2016-08-18 134 views
0

我使用MySQL 5.7,和我得到这个查询时出现错误:如果我改变GROUP BY MONTH(created)MySQL的SELECT列表是不是在GROUP BY子句中包含非聚合列

SELECT 
    COUNT(id) AS sales, 
    SUM(amount) AS total, 
    created 
    FROM 
    `payments` 
    WHERE status =1 
    GROUP BY MONTH(created); 

GROUP BY created 

然后错误消失。我没有访问my.ini,对sql_mode进行更改。

+0

这似乎是不言自明的。 – Strawberry

回答

1

既然你一个月明智组,你shold输出的几个月也

SELECT COUNT(id) AS sales, 
     SUM(amount) AS total, 
     MONTH(created) 
    FROM payments 
    WHERE status = 1 
    GROUP BY MONTH(created) 

否则MySQL有挑选从组中created值。但是你应该定义要显示的内容。

另一种可能性,而不是输出MONTH(created)将是像min(created)这样的日期聚合,它会输出每月的最早日期。

+0

@uergen d,我已经试过了,但仍然得到相同的错误 – Alko

+0

我怀疑这一点。这是确切的查询? –

+0

@uergen d,对不起我的坏。我有“MONTH(创建)”和“创建”两列。它现在工作完美。谢谢。 – Alko

相关问题