Mysql:每月记录数(包括零)

2024-02-01

我正在尝试计算表中的记录并按日期对它们进行分组。我当前的查询如下所示:

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

这是有效的,除了我还想获得不存在记录的月份的计数。

任何人都可以提供有关如何实现这一目标的建议/建议吗?


在 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)中转换结果。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Mysql:每月记录数(包括零) 的相关文章

随机推荐