mysql - 分组依据不返回空值

标签 mysql

所以我使用了类似的 GROUP BY 并且它有效:

SELECT  COUNT(*) as count FROM hpg_outgoing_datas
WHERE YEAR(outgoing_data_date) = $param
GROUP BY MONTH(outgoing_data_date)

结果是:

1856
4076
4313
4590
3636
26412
6165
17694
25325
12321
10750

但我想得到这个结果

0
1856
4076
4313
4590
3636
26412
6165
17694
25325
12321
10750

第一个月没有数据

最佳答案

您需要一个返回所有月份 (1-12) 并左连接表的查询,以便您可以计算所有月份,甚至是表中不存在的月份:

SELECT m.month, COUNT(h.outgoing_data_date) as count 
FROM (
  SELECT 1 AS month UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL
  SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL
  SELECT 9 UNION ALL SELECT 10 UNION ALL SELECT 11 UNION ALL SELECT 12
) m LEFT JOIN (
  SELECT * FROM hpg_outgoing_datas
  WHERE YEAR(outgoing_data_date) = $param
) h ON MONTH(h.outgoing_data_date) = m.month
GROUP BY m.month

关于mysql - 分组依据不返回空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59703594/

相关文章:

php - Wordpress MySQL 不会在查询字符串中执行变量

MySQL:有人用过 TokuDB 存储引擎吗?

mySQL 到 SQL 迁移

java - POST 时传递到持久化的分离实体

mysql - sql 在查询子句中使用求和结果

php - 如何集成AJAX避免PHP CMS的页面重定向

mysql时间比较-奇怪的结果

MySQL 工作台。如何使用 LIKE、OR 和 AND 设置多个条件

c# - Entity Framework 6 mysql rowversion

php - 如何应用 mysql 200 个连接限制?