Ruby On Rails检索mysql数据库数据’a’不同’b’

我的数据库有一个设备读取列表,

列是id,device_id,device_reading,update_time

如何为每个设备选择所有最新读数?

这意味着,我首先需要根据update_time对数据进行排序

然后我需要过滤数据库使用一些独特的方法(唯一的device_id)

那么我可以从刚刚过滤的行中检索device_reading。

也就是说,从表中检索列a,其中b是不同的

我该怎么做到这一点? 在铁轨上的ruby

提前致谢

假设模型名称是DeviceReading

 DeviceReading.distinct(:device_id).order('update_time DESC').pluck(:device_reading) 

如果要按升序排序,可以使用ASC代替DESC

来源: 独特和采摘 排序/订单

编辑:独特只适用于rails 4,所以如果你使用rails 3你应该做这样的事情:

 DeviceReading.select(:device_id).uniq.pluck(:device_reading) 

但是,当我在上面链接.order('update_time DESC')时,我得到了神秘的错误。 我想找到解决方案。 同时我希望这可以帮助你。

来源: 明显的未定义错误

这个问题看起来非常类似于下面的问题:

选择每个GROUP BY组中的第一行?

在没有优雅解决方案可以找到Rails方式的情况下,您可以先找出正确的sql并使用find_by_sql来检索数据集。

Interesting Posts