RubyonRails检索mysql数据库数据“a”和“b”

RubyonRails检索mysql数据库数据“a”和“b”,mysql,sql,ruby-on-rails,ruby,greatest-n-per-group,Mysql,Sql,Ruby On Rails,Ruby,Greatest N Per Group,我的数据库有一个设备读取列表 列为id、设备id、设备读取、更新时间 如何选择每个设备的所有最新读数 这意味着,我首先需要根据更新时间对数据进行排序 然后我需要使用一些唯一的方法来过滤数据库 然后我可以从刚才过滤的行中检索设备_读数 也就是说,从b不同的表中检索列a 我怎样才能做到这一点?在RubyonRails中 提前感谢假设型号名称为DeviceReading 如果要按升序排序,可以使用ASC代替DESC 资料来源: 编辑:distinct仅在rails 4中起作用,因此如果您使用rails

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

列为id、设备id、设备读取、更新时间

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

这意味着,我首先需要根据更新时间对数据进行排序

然后我需要使用一些唯一的方法来过滤数据库

然后我可以从刚才过滤的行中检索设备_读数

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

我怎样才能做到这一点?在RubyonRails中


提前感谢

假设型号名称为DeviceReading

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

资料来源:

编辑:distinct仅在rails 4中起作用,因此如果您使用rails 3,您应该执行以下操作:

DeviceReading.select(:device_id).uniq.pluck(:device_reading)
然而,当我在上面的chain.order'update\u time DESC'时,我得到了一个神秘的错误。我正试图找到解决办法。同时,我希望这对你有所帮助


来源:

假设模型名为DeviceReading

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

资料来源:

编辑:distinct仅在rails 4中起作用,因此如果您使用rails 3,您应该执行以下操作:

DeviceReading.select(:device_id).uniq.pluck(:device_reading)
然而,当我在上面的chain.order'update\u time DESC'时,我得到了一个神秘的错误。我正试图找到解决办法。同时,我希望这对你有所帮助


来源:

这个问题看起来与下面的问题非常相似:


如果无法通过Rails找到完美的解决方案,您可以首先找出正确的sql,然后使用find_by_sql检索数据集。

这个问题与下面的问题非常相似:


如果无法通过Rails找到完美的解决方案,您可以首先找出正确的sql,然后使用find\u by\u sql检索数据集。

设备读取列中存储了什么样的数据?对还是错?发布与您的设备阅读列表相关的所有型号将有助于我们理解这种情况。设备阅读栏中存储了什么样的数据?对还是错?发布与设备阅读列表相关的所有模型将有助于我们理解这种情况。我不建议在rails中编写原始SQL,因为。。。1这可以通过rails active record helper完成,如我在回答2中所示。当您更改数据库时,需要根据新数据库的syntex@Uandl,谢谢你的评论。我同意您的观点,在rails应用程序中直接使用SQL并不是最佳实践。对于Rails不支持的复杂查询,它应该是最后一个选择。。。1这可以通过rails active record helper完成,如我在回答2中所示。当您更改数据库时,需要根据新数据库的syntex@Uandl,谢谢你的评论。我同意您的观点,在rails应用程序中直接使用SQL并不是最佳实践。对于Rails不支持的复杂查询,它应该是最后一个选择。当我使用它时,错误消息说:未定义的方法'distinct',我使用uniq,没有更多的错误消息,但结果似乎没有过滤,仍然会出现许多MASI更新了我的答案。我还问了另一个与在这里使用select命令相关的问题:当我使用它时,错误消息说:未定义的方法'distinct',我使用uniq,没有更多的错误消息,但结果似乎没有过滤出来,许多MASI已经更新了我的答案。我还问了另一个与使用订单和选择相关的问题: