Предложение 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% результата.
Note • Дробное значение должно быть числом Float64 меньше 1 и больше нуля. • Если в результате вычисления получается дробное количество строк, оно округляется вверх до следующего целого числа.
FETCH задаёт максимальное количество строк, которое может быть в результате запроса.
Опция ONLY используется для возврата строк, которые непосредственно следуют за строками, пропущенными с помощью OFFSET. В этом случае FETCH является альтернативой предложению LIMIT. Например, следующий запрос
совпадает с запросом
Опция WITH TIES используется для возврата всех дополнительных строк, которые в соответствии с предложением ORDER BY делят последнее место в результирующем наборе. Например, если fetch_row_count равно 5, но ещё две строки совпадают по значениям столбцов ORDER BY с пятой строкой, результирующий набор будет содержать семь строк.
:::note
Согласно стандарту, предложение OFFSET должно стоять перед предложением FETCH, если оба присутствуют.
:::
:::note
Фактическое смещение также может зависеть от настройки offset.
:::
Примеры
Исходная таблица:
Использование опции ONLY:
Результат:
Использование параметра WITH TIES:
Результат: