2010-08-15 178 views
5

我試圖計算我的表中的記錄並將它們按日期分組。我目前的查詢看起來像下面這樣:Mysql:每月計數記錄(包括零)

SELECT 
    count(*), 
    MONTH(time) as month, 
    YEAR(time) as year 
FROM 
    myTable 
GROUP BY 
    month, year 
ORDER BY 
    year, month 

這有效,除了我也想得到一個沒有記錄存在的月的計數。

任何人都可以提供關於如何完成此建議/建議?

回答

2

在MySQL中執行此操作的最簡單方法是創建一個名爲months的表,其中列出了您感興趣的所有月份並使用LEFT JOIN添加到表中。

SELECT 
    YEAR(time) AS year 
    MONTH(time) AS month, 
    COUNT(myTable.year) AS cnt, 
FROM months 
LEFT JOIN myTable 
    ON months.year = myTable.year 
    AND months.month = myTable.month 
GROUP BY months.year, months.month 
ORDER BY months.year, months.month 

然而,因爲這主要是演示問題往往是容易只是運行查詢,你已經在做,並在客戶端(例如PHP)轉換的結果。