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

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

# Оператор LIMIT

Оператор `LIMIT` задаёт количество строк, возвращаемых в результатах запроса.

<div id="basic-syntax">
  ## Основной синтаксис
</div>

**Выбор первых строк:**

```sql theme={null}
LIMIT m
```

Возвращает первые `m` строк результата или все записи, если их меньше `m`.

**Альтернативный синтаксис TOP (совместимый с MS SQL Server):**

```sql theme={null}
-- SELECT TOP число|процент имя_столбца(ов) FROM имя_таблицы
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);
```

Это эквивалентно `LIMIT m` и может использоваться для совместимости с запросами Microsoft SQL Server.

**Выборка с OFFSET:**

```sql theme={null}
LIMIT m OFFSET n
-- или эквивалентно:
LIMIT n, m
```

Пропускает первые `n` строк, затем возвращает следующие `m` строк.

В обеих формах `n` и `m` должны быть неотрицательными целыми числами.

<div id="negative-limits">
  ## Отрицательные ограничения
</div>

Выбирайте строки из *конца* результирующего набора, используя отрицательные значения:

| Синтаксис            | Результат                                              |
| -------------------- | ------------------------------------------------------ |
| `LIMIT -m`           | Последние `m` строк                                    |
| `LIMIT -m OFFSET -n` | Последние `m` строк после пропуска последних `n` строк |
| `LIMIT m OFFSET -n`  | Первые `m` строк после пропуска последних `n` строк    |
| `LIMIT -m OFFSET n`  | Последние `m` строк после пропуска первых `n` строк    |

Синтаксис `LIMIT -n, -m` эквивалентен `LIMIT -m OFFSET -n`.

<div id="fractional-limits">
  ## Дробные лимиты
</div>

Используйте десятичные значения от 0 до 1, чтобы выбрать процент строк:

| Синтаксис               | Результат                                             |
| ----------------------- | ----------------------------------------------------- |
| `LIMIT 0.1`             | Первые 10% строк                                      |
| `LIMIT 1 OFFSET 0.5`    | Медианная строка                                      |
| `LIMIT 0.25 OFFSET 0.5` | Третий квартиль (25% строк после пропуска первых 50%) |

<Note>
  * Дробные значения должны иметь тип [Float64](/ru/reference/data-types/float), быть больше 0 и меньше 1.
  * Дробное количество строк округляется вверх до ближайшего целого числа.
</Note>

<div id="combining-limit-types">
  ## Комбинирование типов LIMIT
</div>

Можно сочетать стандартные целые числа с дробными или отрицательными смещениями:

```sql theme={null}
LIMIT 10 OFFSET 0.5    -- 10 строк начиная с середины
LIMIT 10 OFFSET -20    -- 10 строк после пропуска последних 20
```

<div id="limit--with-ties-modifier">
  ## LIMIT ... WITH TIES
</div>

Модификатор `WITH TIES` включает дополнительные строки, у которых значения `ORDER BY` совпадают со значениями последней строки в пределах заданного ограничения.

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
```

```response theme={null}
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
```

При использовании `WITH TIES` включаются все строки с тем же значением, что и последнее:

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES
```

```response theme={null}
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
```

Строка 6 включена, потому что у неё такое же значение (`2`), как и у строки 5.

То же самое происходит, когда смещение задаётся с помощью ключевого слова `OFFSET`:

```sql theme={null}
SELECT * FROM (
    SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
```

```response theme={null}
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
```

Если пропустить первые 2 строки и взять 3, обычно вернутся `1, 1, 2`, но в результат также попадёт вторая `2`, потому что её значение совпадает со значением последней строки.

<Note>
  `WITH TIES` не поддерживается при отрицательных значениях LIMIT.
</Note>

Этот модификатор можно использовать вместе с модификатором [`ORDER BY ... WITH FILL`](/ru/reference/statements/select/order-by#order-by-expr-with-fill-modifier).

<div id="considerations">
  ## Важные замечания
</div>

**Недетерминированные результаты:** Без предложения [`ORDER BY`](/ru/reference/statements/select/order-by) возвращаемые строки могут быть произвольными и отличаться от одного выполнения запроса к другому.

**Ограничение на стороне сервера:** На количество возвращаемых строк также может влиять настройка [limit](/ru/reference/settings/session-settings#limit).

<div id="see-also">
  ## См. также
</div>

* [LIMIT BY](/ru/reference/statements/select/limit-by) — Ограничивает число строк для каждой группы значений; полезно, когда нужно получить топ-N результатов в каждой категории.
