不少状况下,为配合前端画表格,后台须要从数据库中取出连续的数据,好比最近一周或者最近一个月的,这就要求数据不能断,必须是时间连续的,好处理前端
我使用的是mysql数据库,表结构以下:mysql
t_temp
tt_id
tt_date
1
2019-01-19
2
2019-01-19
2
2019-01-22
5
2019-01-23
开始时个人SQL语句是这样的sql
select SUM(tt_id) as sum, tt_date as date from t_temp where DATEDIFF(CURDATE(), tt_date) < 7
group by tt_date;
结果是,没有 ‘01-21’ 与 ‘01-20’ 等记录为空的数据 ,这样的数据处理起来是不方便的数据库
个人解决方法是这样的,先取出一段连续的时间,再 right join 这段时间表,就能把没有记录的时间取出来了。spa
由于时间是变化的,因此我创建一个的是数字表:假设是取最近七天的数据code
num
i
0
1
2
3
4
5
6
首先取出最近一周的时间blog
select DATE_SUB(CURDATE(), INTERVAL n.i DAY) as date from num n;
结果:ci
接下来把以上两个SQL语句合成一个能够了:io
select IFNULL(SUM(tt.tt_id),0) as sum, td.tdate as date from t_temp tt right join
(select DATE_SUB(CURDATE(), INTERVAL n.i DAY) as tdate from num n) td on tt.tt_date=td.tdate
group by td.tdate;
结果以下:table