Sqlite LIMIT / OFFSET запрос

140
задан Benjamin 20 September 2014 в 13:02
поделиться

2 ответа

Эти две формы синтаксиса немного сбивают с толку, потому что они меняют местами цифры:

LIMIT <skip>, <count>

Is equivalent to:

LIMIT <count> OFFSET <skip>

Это совместимо с синтаксисом MySQL и PostgreSQL. MySQL поддерживает обе формы синтаксиса, и в его документации утверждается, что второй синтаксис с OFFSET был предназначен для обеспечения совместимости с PostgreSQL. PostgreSQL docs показывает, что он поддерживает только второй синтаксис, а docs SQLite показывает, что он поддерживает оба, рекомендуя второй синтаксис, чтобы избежать путаницы.

Кстати, использование LIMIT без предварительного использования ORDER BY не всегда дает желаемые результаты. На практике SQLite будет возвращать строки в определенном порядке, вероятно, определяемом тем, как они физически хранятся в файле. Но это не обязательно означает, что в том порядке, который вам нужен. Единственный способ получить предсказуемый порядок - использовать ORDER BY в явном виде.

253
ответ дан 23 November 2019 в 22:59
поделиться

Последний вариант является альтернативным синтаксисом с одной оговоркой:

Если запятая используется вместо ключевого слова OFFSET, то смещением является первое число, а предел - второе число. Это кажущееся противоречие является намеренным - оно максимизирует совместимость с устаревшими системами баз данных SQL.

22
ответ дан 23 November 2019 в 22:59
поделиться
Другие вопросы по тегам:

Похожие вопросы: