一对多取最新sql求解?
需求是这样,由一张设备表,字段由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个回答

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
回复

适合作为回答的
- 经过验证的有效解决办法
- 自己的经验指引,对解决问题有帮助
- 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
- 询问内容细节或回复楼层
- 与题目无关的内容
- “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容