如何获取一年里每个月的记录总数,要求不管该月有没有数据都要显示,没有的显示为0?

如何获取一年里每个月的记录总数,要求不管该月有没有数据都要显示,没有的显示为0?

问题描述:

假如我有个数据表,里面只有“2007-05-29”的一条数据,
我希望得到的结果是
月份 数据
1 0
2 0
3 0
4 0
5 1
6 0

7 0
8 0
9 0
10 0
11 0
12 0

有个主键商品id,销售日期date,,,mysql的数据库,有劳各位了~~~

现写了一个,日期自己再加工加工吧

 create table MONTH_TABLE(
  MONTH_NUM INT
)
CREATE TABLE TESTDATE(
   GOOD_KEY VARCHAR(60),
   GOOD_DATE VARCHAR(60)
)
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(1);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(2);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(3);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(4);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(5);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(6);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(7);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(8);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(9);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(10);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(11);
INSERT INTO MONTH_TABLE(MONTH_NUM) VALUES(12);
INSERT INTO TESTDATE(GOOD_KEY,GOOD_DATE) VALUES('ASDFA','2007-05-09');

select MT.MONTH_NUM 日期,ifnull(total_num,0) as 数量 from 
MONTH_TABLE MT left join
(
SELECT T.*,MONTH(GOOD_DATE)+0 M FROM (
    select count(good_key)  TOTAL_NUM,GOOD_DATE from TESTDATE group by GOOD_DATE
) T) t on t.m = MT.MONTH_NUM
order by MT.MONTH_NUM

1、建一张辅助表,里面插入1-12数字,共12行记录。
2、通过group by日期统计月份数据。
3、两张表连表查询就可以了。

请问怎么将判断为空时为0显示,不然这样关联查询还是得不到想要的结果,不能显示每个月,只能是有数据的那几个月

请问怎么将判断为空时为0显示,不然这样关联查询还是得不到想要的结果,不能显示每个月,只能是有数据的那几个月

先插入至临时表, 再select 出来