2010-05-05 3 views
1

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

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

+0

Возможный дубликат [SQLite3 (или общий SQL) извлекает n-я строка результата запроса] (http://stackoverflow.com/questions/3419626/sqlite3-or-general-sql-retrieve-nth-row-of- a-query-result) –

ответ

11

Вы хотите СМЕЩЕНИЕ.

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

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

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

Link to documentation, который описывает OFFSET следующим образом:

Дополнительный OFFSET следующий LIMIT определяет, сколько строк пропустить в начале результирующего набора ,

1

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

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 синтаксис перед тем компенсирующего вступ uced. (Последняя версия, которую я использовал.)

+0

Я ценю обновление вашего ответа. –

3

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

SELECT * from myTable 
ORDER BY someField 

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

SELECT * from myTable 
ORDER BY someField 
LIMIT 1 OFFSET 11 

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

Смежные вопросы