对于未在表中出现的行,将rowcount返回为0

时间:2013-06-19 07:46:57

标签: mysql count group-by

我有这张桌子:

MonthList (month_name, ticket)

我想得到特定月份的次数。

例如在Q2中,我运行以下查询:

SELECT month_name as 'Month', count('Month') as 'Ticket Count' from Monthlist
where month_name in ('May', 'June', 'July') 
group by Month order by Month asc

现在如果没有包含May的行,那么结果中根本不会返回May,我会得到这样的结果:

  

6月5日

     

7月10日

我希望上面的列表也包含May 0

1 个答案:

答案 0 :(得分:0)

为此,您最好在月份表(包含月份名称)和票证表(包含票证)之间执行连接。

一个月会有一个整数ID,而ticket表会有一个指向月表的列链接。

然后,您将执行此类SQL查询。

SELECT
    months.month_name AS 'Month',
    count(tickets.id) AS 'Ticket Count'
FROM
    months
LEFT JOIN
    tickets
ON
    tickets.month_id = months.id
GROUP BY
    months.id

这样可以减少您在故障单表格中重现的数据量,并且更加灵活。

上面的查询未经过测试,但我非常确定应该完成这项工作,当然,只要您的数据库具有所需的表格。

使用月份名称的第二个示例,并按特定月份进行过滤。

SELECT
    months.month_name AS 'Month',
    count(tickets.id) AS 'Ticket Count'
FROM
    months
LEFT JOIN
    tickets
ON
    tickets.month_name = months.month_name
WHERE
    months.month_name IN ("May","June","July")
GROUP BY
    months.month_name
ORDER BY
    months.month_name ASC