如何查询多个属性值的最后一个值?

时间:2017-05-31 03:21:02

标签: sql ruby-on-rails postgresql activerecord

我使用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

我已尝试在此处和文档中搜索。我已经阅读并尝试了一些小组'并且'方法,但无济于事。

1 个答案:

答案 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)