Ruby on Rails:查找具有最低值的特定列的记录
问题描述:
我正试图在数据库中查找具有其datetime列的最低值的记录。用更简单的话来说,我想尽早找到一条记录。Ruby on Rails:查找具有最低值的特定列的记录
我可以使用最小值来找到最低值,但这只会返回值本身,而不是整个记录。
我想我可以创建另一个查询,但我想知道是否有一个更有效的方法来做到这一点。
答
这将工作:
earliest = Model.first(:order => 'column asc')
—凡型号是你的模型类的名称和列是datetime列的名称。它会生成这个SQL语句:
SELECT * FROM `Model` ORDER BY column asc LIMIT 1
答
我不知道回报率,但与SQL你可以查询的结果通过了日期时间字段和排序结果限制数量为1
SQL:
SELECT field1,field2,... FROM table ORDER BY datefield LIMIT 1;
或者,也许在Ruby中(虽然不知道):
table.find(:all, :limit => 1, :order => 'datefield.asc')
答
Table.first(:order => 'created_on')
+1
如果此工作过,它似乎并没有对Rails 4.1.6工作。 – Ravenstine 2014-12-11 23:52:08
答
@Ravenstine作为轨道3的,下面是正确的语法
earliest = Model.order('column asc').first
我知道这很晚了,但不是在参数哈希中使用`.first`和`'asc'`来实现`:order` – 2011-11-04 05:21:56
@AnkitSoni没有`first`,查询会返回多个记录。 – 2011-11-05 09:38:31