SQLite получит 12-ю запись - самая эффективная? - PullRequest
1 голос
/ 05 мая 2010

Какой самый лучший SQL-запрос в SQLite для получения N-го элемента из списка данных.

Данные не имеют цифровых клавиш

Ответы [ 3 ]

10 голосов
/ 05 мая 2010

Вы хотите смещение.

SELECT mycol FROM mytable ORDER BY mycol LIMIT 1 OFFSET 11;

Сокращенная версия:

SELECT mycol FROM mytable ORDER BY mycol LIMIT 11,1;

Ссылка на документацию , которая описывает OFFSET следующим образом:

Необязательный OFFSET после LIMIT указывает, сколько строк пропустить на начало набора результатов.

3 голосов
/ 05 мая 2010

Итак, скажем, ваш запрос был

SELECT * from myTable
ORDER BY someField

Вы можете использовать LIMIT и OFFSET до

SELECT * from myTable
ORDER BY someField
LIMIT 1 OFFSET 11

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

1 голос
/ 05 мая 2010

Используйте это, если вы не знаете каких-либо типов полей, по которым вы можете сортировать, затем перейдите к последней записи:

select * from table limit 12

Если есть поле, в котором будет приведена таблица в порядок, это даст вам 12-ую запись:

select * from table where field = (select field from table order by field desc limit 12) limit 1

EDIT : Это синтаксис SqLite 2.x до появления OFFSET. (Последняя версия, которую я использовал.)

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