Ruby on Rails:查找具有特定列的最低值的记录

时间:2009-04-11 22:09:02

标签: mysql ruby-on-rails ruby

我试图在数据库中找到具有其datetime列最低值的记录。简单来说,我想找到最早的记录。

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

我想我可以创建另一个查询,但我想知道是否有更有效的方法来执行此操作。

4 个答案:

答案 0 :(得分:18)

这将有效:

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

- Model 是模型类的名称,是日期时间列的名称。它将生成此SQL语句:

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

答案 1 :(得分:3)

Table.first(:order => 'created_on')

答案 2 :(得分:2)

@Ravenstine从rails 3开始,以下是正确的语法

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

答案 3 :(得分:0)

我不确定RoR,但使用SQL,您只需按日期时间字段对查询结果进行排序,并将结果数限制为1.

SQL:

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

或者也许在Ruby中(不确定):

table.find(:all, :limit => 1, :order => 'datefield.asc')