Есть ли простой способ получить номер записи N в запросе? - PullRequest
2 голосов
/ 27 декабря 2010

То, чего я хотел бы достичь, можно (неэффективно) сделать так:

records = SomeModel.where(:some_field => "some value").all
required_record = records[n]

... где n - заданная позиция записи в результатах ("где").

Очевидно, что для больших столов это неэффективно. Есть ли способ достичь этого без загрузки всех записей?

Ответы [ 2 ]

4 голосов
/ 27 декабря 2010

Используйте комбинацию offset и limit, чтобы выбрать только желаемую строку. Например, чтобы получить только 5-й результат:

SomeModel.where(:some_field => "some value").offset(5).limit(1)
0 голосов
/ 27 декабря 2010

Э-э, я не уверен, что понимаю ваш вопрос ... Базы данных обычно не заботятся о порядке строк, поэтому вы упорядочиваете по полю?Если это так, вы можете использовать что-то вроде функции rank () в PostgreSQL (http://www.postgresql.org/docs/current/static/tutorial-window.html).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...