Предложение OFFSET FETCH
OFFSET и FETCH позволяют извлекать данные порциями. Они задают блок строк, который вы хотите получить одним запросом.
Значение offset_row_count или fetch_row_count может быть числом или литералом. Можно опустить fetch_row_count; по умолчанию оно равно 1.
OFFSET задаёт количество строк, которые нужно пропустить перед началом возврата строк из результата запроса. OFFSET n пропускает первые n строк результата.
Поддерживается отрицательный OFFSET: OFFSET -n пропускает последние n строк результата.
Также поддерживается дробный OFFSET: OFFSET n — если 0 < n < 1, то пропускается первая n * 100% результата.
Пример:
• OFFSET 0.1 — пропускает первые 10% результата.
Примечание • Дробь должна быть числом Float64, меньшим 1 и большим нуля. • Если в результате вычисления получается дробное количество строк, оно округляется вверх до ближайшего целого числа.
FETCH задаёт максимальное количество строк, которое может быть в результате запроса.
Опция ONLY используется для возврата строк, которые непосредственно следуют за строками, пропущенными с помощью OFFSET. В этом случае FETCH является альтернативой оператору LIMIT. Например, следующий запрос
идентичен запросу
Опция WITH TIES используется для возврата дополнительных строк, которые по значениям сортировки соответствуют последней строке результирующего набора в соответствии с предложением ORDER BY. Например, если fetch_row_count равен 5, но ещё две строки имеют те же значения столбцов ORDER BY, что и пятая строка, результирующий набор будет содержать семь строк.
Согласно стандарту, предложение OFFSET должно идти перед предложением FETCH, если оба присутствуют.
Фактическое смещение также может зависеть от настройки offset.
Примеры
Исходная таблица:
Использование параметра ONLY:
Результат:
Использование параметра WITH TIES:
Результат: