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

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

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

问题:

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

解决方案:

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

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 代码将返回每个设备的最新温度、功率和时间戳。

© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享