> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-mintlify-3a82795f.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Документация по OFFSET

# Предложение OFFSET FETCH

`OFFSET` и `FETCH` позволяют получать данные порциями. Они задают блок строк, который нужно получить одним запросом.

```sql theme={null}
-- Стиль стандарта SQL:
[OFFSET offset_row_count {ROW | ROWS}] [FETCH {FIRST | NEXT} fetch_row_count {ROW | ROWS} {ONLY | WITH TIES}]

-- Стиль MySQL/PostgreSQL:
[LIMIT [n, ]m] [OFFSET offset_row_count]
```

Значение `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](/ru/reference/data-types/float), меньшим 1 и больше нуля.
> • Если в результате вычисления получается дробное число строк, оно округляется вверх до следующего целого числа.

`FETCH` задает максимальное количество строк, которое может содержаться в результате запроса.

Параметр `ONLY` используется для возврата строк, которые идут сразу после строк, пропущенных `OFFSET`. В этом случае `FETCH` служит альтернативой выражению [LIMIT](/ru/reference/statements/select/limit). Например, следующий запрос

```sql theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 1 ROW FETCH FIRST 3 ROWS ONLY;
```

совпадает с запросом

```sql theme={null}
SELECT * FROM test_fetch ORDER BY a LIMIT 3 OFFSET 1;
```

Опция `WITH TIES` используется для возврата всех дополнительных строк, которые делят последнее место в результирующем наборе согласно предложению `ORDER BY`. Например, если `fetch_row_count` равно 5, но ещё две строки имеют те же значения в столбцах `ORDER BY`, что и пятая строка, результирующий набор будет содержать семь строк.

<Note>
  Согласно стандарту, предложение `OFFSET` должно идти перед предложением `FETCH`, если присутствуют оба.
</Note>

<Note>
  Фактическое смещение также может зависеть от настройки [offset](/ru/reference/settings/session-settings#offset).
</Note>

<div id="examples">
  ## Примеры
</div>

Исходная таблица:

```text theme={null}
┌─a─┬─b─┐
│ 1 │ 1 │
│ 2 │ 1 │
│ 3 │ 4 │
│ 1 │ 3 │
│ 5 │ 4 │
│ 0 │ 6 │
│ 5 │ 7 │
└───┴───┘
```

Использование параметра `ONLY`:

```sql title="Query" theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS ONLY;
```

```text title="Response" theme={null}
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
└───┴───┘
```

Использование опции `WITH TIES`:

```sql title="Query" theme={null}
SELECT * FROM test_fetch ORDER BY a OFFSET 3 ROW FETCH FIRST 3 ROWS WITH TIES;
```

```text title="Response" theme={null}
┌─a─┬─b─┐
│ 2 │ 1 │
│ 3 │ 4 │
│ 5 │ 4 │
│ 5 │ 7 │
└───┴───┘
```
