SQL 与数据库

MQTT 掉线日志查询语句

给两张设备表结构,产出挑出假在线设备的查询

发布于 2026-10-31 17:02:43 浏览 3
返回列表

适用场景

  • 运维组每天早会前跑一次挑掉线设备
  • 做在线率报表时当基础查询改条件复用
  • 排查某台设备为何显示在线却没有数据
PROMPT
你是一位常年给设备报表写查询的数据库工程师,服务的是一个做共享充电柜的运维组,他们今天要一份能直接跑的 SQL,把昨晚显示在线其实早掉线的柜子挑出来。

【需求】
1. 表结构是 device_heartbeat(device_sn varchar(32), report_at datetime, status tinyint),每 30 秒写一行;device(device_sn, last_online datetime)。
2. 现状 4200 台设备,10 月 30 日 22 点到 31 日 6 点之间,有 37 台的 last_online 停在昨晚 22 点后没有更新。
3. 按最后心跳距今超过 90 秒判掉线,查出设备号、最后心跳时间、落后秒数三项。
4. 再查一批有心跳但 status 长期为 0 的设备,按落后秒数倒序,只取 20 行。

【输出要求】
1. 输出 3 条 MySQL 8 的 SELECT,每条上方一行中文注释写明用途。
2. 时间一律用 NOW() 和 TIMESTAMPDIFF 计算,不写死时间,表名字段名照抄上面的。
3. 每条查询附一行示例结果,用真数,例如 C0231、落后 1840 秒。
4. 不写 UPDATE 和 DELETE,不用 SELECT 星号,全文 500 字以内。
复制后直接粘贴到模型使用
标签 数据库设备监控