2009-04-11 31 views
6

我正试图在数据库中查找具有其datetime列的最低值的记录。用更简单的话来说,我想尽早找到一条记录。Ruby on Rails:查找具有最低值的特定列的记录

我可以使用最小值来找到最低值,但这只会返回值本身,而不是整个记录。

我想我可以创建另一个查询,但我想知道是否有一个更有效的方法来做到这一点。

回答

17

这将工作:

earliest = Model.first(:order => 'column asc') 

—凡型号是你的模型类的名称和是datetime列的名称。它会生成这个SQL语句:

SELECT * FROM `Model` ORDER BY column asc LIMIT 1 
+0

我知道这很晚了,但不是在参数哈希中使用`.first`和`'asc'`来实现`:order` – 2011-11-04 05:21:56

+1

@AnkitSoni没有`first`,查询会返回多个记录。 – 2011-11-05 09:38:31

0

我不知道回报率,但与SQL你可以查询的结果通过了日期时间字段和排序结果限制数量为1

SQL:

SELECT field1,field2,... FROM table ORDER BY datefield LIMIT 1; 

或者,也许在Ruby中(虽然不知道):

table.find(:all, :limit => 1, :order => 'datefield.asc') 
3
Table.first(:order => 'created_on') 
+1

如果此工作过,它似乎并没有对Rails 4.1.6工作。 – Ravenstine 2014-12-11 23:52:08

2

@Ravenstine作为轨道3的,下面是正确的语法

earliest = Model.order('column asc').first 
相关问题