思路是利用 一張日期的輔助表 來 left join 自己的表 查詢,空用ifnull(xxx,0)。
參考博文:https://blog.csdn.net/jie11447416/article/details/50887888
不過我自己的需求和博主的不太一樣
我還需要查每天的
我的數(shù)據(jù)庫字段:

CREATE TABLE num (i int);-- 創(chuàng)建一個表用來儲存0-9的數(shù)字
INSERT INTO num (i) VALUES (0), (1), (2), (3), (4), (5), (6), (7), (8), (9);-- 生成0-9的數(shù)字,方便以后計算時間
CREATE TABLE? if not exists calendar(datehour?datetime ); -- 生成一個存儲日期的表,datehour?是字段名
-- 這里是生成并插入日期數(shù)據(jù)
INSERT INTO calendar ( datehour ) SELECT -- 生成按小時的數(shù)據(jù)
DATE_ADD( ( DATE_FORMAT( "2018-11-10", '%Y-%m-%d' ) ), INTERVAL numlist.id HOUR ) AS `date`
FROM
? ? (
SELECT
? ? n1.i + n10.i * 10 + n100.i * 100 + n1000.i * 1000+ n10000.i * 10000 AS id
FROM
? ? num n1
? ? CROSS JOIN num AS n10
? ? CROSS JOIN num AS n100
? ? CROSS JOIN num AS n1000
? ? CROSS JOIN num AS n10000
? ? ) AS numlist;
此時數(shù)據(jù)庫表如下

num表看各位心情,我是刪掉了
SELECT
b.datehour ,
ifnull(a.consume_money, 0 )?
FROM
calendar b
LEFT JOIN (
SELECT
*
FROM
consume ) a
ON a.consume_when = b.datehour
結(jié)果如下:
