需求:
项目需要在查询数据的时候,将没有数据的日期自动补充数据。
实现思路:
设定一个变量进行叠加再用一个日期函数进行叠加日期从目标表和变量进行查询,遍历出我们需要的日期。在这个基础上与目标表有条件的左连接,这个时候使用判断函数进行查询,没有数据的日期自动补零。
具体实现效果如下:
SELECT
t2.all_day AS createdOn,
IFNULL(count(id), 0) AS sumOfActiveDriver
FROM
(
SELECT
@rownum := @rownum + 1 AS NO,
DATE_ADD(
'2016-04-05',
INTERVAL @rownum DAY
) AS all_day
FROM
(SELECT @rownum := -1) a ,
pay_history
) t2
LEFT JOIN pay_history ON (
t2.all_day = DATE(pay_history.created_on)
)
WHERE 1=1
AND t2.all_day >= '2016-04-05'
AND t2.all_day <= '2016-06-29'
GROUP BY
t2.all_day;
这里面使用到Data_ADD()和IFNULL这两个函数。
Data_ADD():
函数向日期添加指定的时间间隔。