闪耀着天才般的光辉 mysql with recursive with 的妙用

该博客主要探讨如何通过SQL查询来检查GPS设备的数据上传情况。内容涉及创建一个虚拟表Date_Ranges,该表以20分钟为间隔遍历一天的时间段。然后,通过左连接GPS表,检查在每个20分钟时段内是否存在上传记录。如果某时间段内没有数据,则可能表明GPS设备存在问题。此方法可用于设备状态监控和故障排查。
摘要由CSDN通过智能技术生成

需求:gps设备一天内存在很多组gps数据 要求每20分钟必须上传一组gps数据 否则则判定gps设备存在问题

通过 with as 创建一个虚拟表 见注释

-- WITH recursive用于递归
WITH recursive Date_Ranges AS (
-- 初始条件 
    select '2021-12-28 00:00:00' as Datetime
-- union all 上下连接所有结果集
   union all
-- 递增条件规则
   select Datetime + interval 20 minute
   from Date_Ranges
-- 结束条件
   where Datetime < '2021-12-28 23:39:59')
-- 虚拟表创建完成

-- 查看虚拟表
select * from Date_Ranges

结果如下
在这里插入图片描述

左连接(从gps表里把上传时间提取出来进行 按照虚拟表的格式取整 ) 如果从gps表的上传时间为空则表示没有数据

-- WITH recursive用于递归
WITH recursive Date_Ranges AS (
-- 条件初始化 
    select '2021-12-28 00:00:00' as Datetime
-- union all 上下连接所有结果集
   union all
-- 条件开始
   select Datetime + interval 20 minute
   from Date_Ranges
-- 条件结束
   where Datetime < '2021-12-28 23:39:59')
-- 虚拟表创建完成

select * from Date_Ranges
left join (select (FROM_UNIXTIME(floor(time/1200)*1200)) as use_time,code from `gps_table_2021_12_28` 
where code=123456
group by  use_time,code) b on DateTime=b.use_time
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值