SQLite3 (или общий SQL) извлекает n-ю строку результата запроса - PullRequest
13 голосов
/ 06 августа 2010

быстрый вопрос по SQLite3 (может также быть общим SQLite)

Как можно извлечь n-ую строку результата запроса?

row_id (или любой другой индекс) не будет работать в моем случае, учитывая, что таблицы содержат столбец с номером. Основываясь на некоторых данных, запросу нужны данные, не отсортированные или отсортированные по критериям asc / desc.

Но мне может понадобиться быстро получить, скажем, строки 2 и 5 результатов.

Так что, кроме реализации sqlite3_step () == SQLITE_ROW со счетчиком прямо сейчас, я понятия не имею, как это сделать.

И мне не очень нравится это решение из-за проблем с производительностью. так что если кто-то может дать намек, который будет высоко оценен.

С уважением Дэвид

Ответы [ 2 ]

24 голосов
/ 06 августа 2010

добавить LIMIT 1 и OFFSET <n> к запросу
пример SELECT * FROM users LIMIT 1 OFFSET 5132;

0 голосов
/ 06 августа 2010

Общий подход заключается в том, что, если вам нужна только n-я строка из m строк, используйте соответствующее условие where, чтобы получить только эту строку.

Если вам нужно попасть в строку и вы не можете этого сделать, потому что никакие критерии where не помогут вам, ваша база данных имеет серьезную проблему с дизайном. Он не может выполнить первую нормальную форму , которая гласит: «Нет никакого упорядочения строк сверху вниз».

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