У меня есть запрос ActiveRecord:
@results = Instrument.where("id < ?", this_id).limit(20)
Возвращает первые 20 записей, которые соответствуют критериям. Я пытаюсь найти способ эффективного получения последних 20 записей запроса.
Чтобы быть более точным c, если у меня всего 100 записей с идентификаторами от 1 до 100 и я указываю
this_id = 51
@results = Instrument.where("id < ?", this_id).limit(20)
, я получаю записи с 1 по 20, тогда как я хочу получать записи 31 до 50. Есть ли эффективный способ сделать это? Я стараюсь не читать всю базу данных до критериев поиска, а просто взять последние 20.
Кстати, этот SQL делает именно то, что я ищу:
SELECT * FROM (SELECT * FROM instruments WHERE id < 151000 ORDER BY id DESC LIMIT 10 ) sub ORDER BY id ASC;