2016-08-18 133 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

相關問題