很多情况下,为配合前端画表格,后台需要从数据库中取出连续的数据,比如最近一周或者最近一个月的,这就要求数据不能断,必须是时间连续的,好处理
我使用的是mysql数据库,表结构如下:
tt_id | tt_date |
1 | 2019-01-19 |
2 | 2019-01-19 |
2 | 2019-01-22 |
5 | 2019-01-23 |
开始时我的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 这段时间表,就能把没有记录的时间取出来了。
因为时间是变化的,所以我建立一个的是数字表:假设是取最近七天的数据
i |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
首先取出最近一周的时间
select DATE_SUB(CURDATE(), INTERVAL n.i DAY) as date from num n;
结果:
接下来把以上两个SQL语句合成一个可以了:
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;
结果如下:
版权声明:本文为baidu_38622301原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。