2010-08-15 132 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)转换的结果。