我使用Ruby on Rails和PostgresQL
我有这个查询用于查找表中具有特定设备属性值的最后一个值:
Positions.where(device_id: 3).last
但是,现在我需要查询多个设备中的每个设备的最后一个值。我非常确定有一种方法可以比单独调用每个设备值的最后一个更有效地做到这一点。
我该如何结合这个:
Positions.where(device_id: 3).last
Positions.where(device_id: 5).last
Positions.where(device_id: 23).last
我已尝试在此处和文档中搜索。我已经阅读并尝试了一些小组'并且'方法,但无济于事。
答案 0 :(得分:1)
尝试此更新..
device_ids = [3,5,23]
Positions.where(device_id: device_ids).group(:device_id).maximum(:id)
返回Hash
,以获取Position
记录,您可以
device_ids = [3,5,23]
last_positions = Position.where(id: Positions
.where(device_id: device_ids)
.group(:device_id)
.maximum(:id).values)