一对多取最新sql求解?

作者站长头像
站长
· 阅读数 17

需求是这样,由一张设备表,字段由id,name , state等信息一张设备记录表,记录了设备得设备id、功率、温度、请求得时间戳数据记录是每5s同步一下,所以数据量是比较大得,能达到百万然后要求是 设备与设备记录表关联,取设备记录最近时间得一条,得到设备最新得温度功率求一个性能比较优得,子查询效率太慢了

目前查到了一个比较巧妙得办法,通过内连接,很妙select from (select from air_conditioner_record order by req_timestamp desc) as r group by air_conditioner_id order by req_timestamp desc

回复
1个回答
avatar
test
2024-07-12

已经找到可行sql

SELECT
                r.air_conditioner_id,
                r.curr_temp,
                r.curr_power,
                r.time_millis
            FROM
                air_conditioner_record r,
            ( SELECT air_conditioner_id, max( time_millis ) max_time FROM air_conditioner_record WHERE time_millis <= REPLACE(unix_timestamp(now(3)),'.','') GROUP BY air_conditioner_id ) r2
            WHERE
                r2.air_conditioner_id = r.air_conditioner_id
            AND r2.max_time = r.time_millis
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容