Ruby on Rails: найти запись с наименьшим значением определенного столбца - PullRequest
8 голосов
/ 12 апреля 2009

Я пытаюсь найти запись в базе данных, которая имеет наименьшее значение из своего столбца datetime. Проще говоря, я хочу найти запись с самым ранним временем.

Я могу использовать минимум, чтобы найти самое низкое значение, но оно будет возвращать только само значение, а не всю запись.

Полагаю, я мог бы создать еще один запрос, но мне интересно, есть ли более эффективный способ сделать это.

Ответы [ 4 ]

18 голосов
/ 12 апреля 2009

Это будет работать:

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

- где Модель - это название класса вашей модели, а столбец - это имя столбца даты и времени. Будет сгенерирован этот оператор SQL:

SELECT * FROM `Model` ORDER BY column asc LIMIT 1
3 голосов
/ 12 апреля 2009
Table.first(:order => 'created_on')
2 голосов
/ 02 января 2015

@ Ravenstine Начиная с рельсов 3, следующий синтаксис правильный

earliest = Model.order('column asc').first
0 голосов
/ 12 апреля 2009

Я не уверен насчет RoR, но с SQL вы можете просто отсортировать результаты вашего запроса по полю datetime и ограничить количество результатов до 1.

SQL:

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

Или, может быть, в Ruby (хотя не уверен):

table.find(:all, :limit => 1, :order => 'datefield.asc')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...