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:
Query
Response
WITH TIES:
Query
Response