如何高效获取一对多关系中的最新记录?
在不同表中找到一对多关系中的最新记录
问题:
如何快速高效地从两张表中获取一对多关系的最新记录?子查询效率太低。
解决方案:
一个性能优异的解决方案是使用内连接和子查询。首先,对记录表按时间戳降序排列并分组,仅选择每个设备的最新记录。然后,将此子查询与主表进行关联即可。
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 代码将返回每个设备的最新温度、功率和时间戳。
以上就是如何高效获取一对多关系中的最新记录?的详细内容,更多请关注其它相关文章!