欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql里面查询一个礼拜的数据,如果查询不到。默认填0.怎么用sql实现

程序员文章站 2022-04-01 10:25:28
...
 SELECT date_tables.dates as name, IFNULL(temps.totalNum,0) AS totalNum
        FROM (
        SELECT DATE_FORMAT(m.date_str,'%m.%d') name, ROUND(SUM(m.mileage)/1000) AS totalNum
        FROM iot_device_miliage m
        WHERE DATE_SUB(CURDATE(), INTERVAL 7 DAY) <= DATE(m.date_str) AND m.date_str!= DATE_FORMAT(NOW(),'%Y-%m-%d')
        GROUP BY DATE_FORMAT(m.date_str,'%m.%d')
        )
        temps
        RIGHT JOIN (
        SELECT @s :[email protected] + 1 AS indexs, DATE_FORMAT(DATE(DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)),'%m.%d') AS dates
        FROM mysql.help_topic,(
        SELECT @s := 0) temp
        WHERE @s < 7
        ORDER BY dates
        ) date_tables ON date_tables.dates=temps.name

实现方案是先查询进一个礼拜的数据,然后在关联起来,如果没有数据,就赋值0

 SELECT @s :[email protected] + 1 AS indexs, DATE_FORMAT(DATE(DATE_SUB(CURRENT_DATE, INTERVAL @s DAY)),'%m.%d') AS dates
        FROM mysql.help_topic,(
        SELECT @s := 0) temp
        WHERE @s < 7
        ORDER BY dates

这个是查询一个礼拜的数据,我们的要求是不包含当天的数据

如果需要包含当天,只要把SELECT @s :=-1) temp
        WHERE @s <6 就可以查询包含当天的一个礼拜的数据

返回的数据就是

sql里面查询一个礼拜的数据,如果查询不到。默认填0.怎么用sql实现

相关标签: 整理