所以我使用了类似的 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/