如何高效获取一对多关系中的最新记录?

如何高效获取一对多关系中的最新记录?

在不同表中找到一对多关系中的最新记录

问题:

如何快速高效地从两张表中获取一对多关系的最新记录?子查询效率太低。

解决方案:

一个性能优异的解决方案是使用内连接和子查询。首先,对记录表按时间戳降序排列并分组,仅选择每个设备的最新记录。然后,将此子查询与主表进行关联即可。

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

sql 代码将返回每个设备的最新温度、功率和时间戳。

以上就是如何高效获取一对多关系中的最新记录?的详细内容,更多请关注www.sxiaw.com其它相关文章!