mysql查询空补0_mysql查询一周内一个月内的数据,为空null没有数据记录的补0

本文介绍了如何在MySQL中处理查询时遇到的空值问题,特别是当需要查询连续日期数据时,如何将没有记录的日期补充为0。通过创建数字表并结合RIGHT JOIN操作,实现了即使数据库中没有对应日期记录也能返回完整日期范围的解决方案。
摘要由CSDN通过智能技术生成

不少状况下,为配合前端画表格,后台须要从数据库中取出连续的数据,好比最近一周或者最近一个月的,这就要求数据不能断,必须是时间连续的,好处理前端

我使用的是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’ 等记录为空的数据 ,这样的数据处理起来是不方便的数据库

78df0ed25d65a8c85de1019850e04707.png

个人解决方法是这样的,先取出一段连续的时间,再 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

793bfd4fa3240b01c8043bc4120fc621.png

接下来把以上两个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

c8e2a41d50e96f4180d7244b494870cc.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值