Оператор LIMIT задаёт количество строк, возвращаемых в результатах запроса.
Выбор первых строк:
Возвращает первые m строк результата или все записи, если их меньше m.
Альтернативный синтаксис TOP (совместимый с MS SQL Server):
-- SELECT TOP число|процент имя_столбца(ов) FROM имя_таблицы
SELECT TOP 10 * FROM numbers(100);
SELECT TOP 0.1 * FROM numbers(100);
Это эквивалентно LIMIT m и может использоваться для совместимости с запросами Microsoft SQL Server.
Выборка с OFFSET:
LIMIT m OFFSET n
-- или эквивалентно:
LIMIT n, m
Пропускает первые n строк, затем возвращает следующие m строк.
В обеих формах n и m должны быть неотрицательными целыми числами.
Отрицательные ограничения
Выбирайте строки из конца результирующего набора, используя отрицательные значения:
| Синтаксис | Результат |
|---|
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.
Используйте десятичные значения от 0 до 1, чтобы выбрать процент строк:
| Синтаксис | Результат |
|---|
LIMIT 0.1 | Первые 10% строк |
LIMIT 1 OFFSET 0.5 | Медианная строка |
LIMIT 0.25 OFFSET 0.5 | Третий квартиль (25% строк после пропуска первых 50%) |
- Дробные значения должны иметь тип Float64, быть больше 0 и меньше 1.
- Дробное количество строк округляется вверх до ближайшего целого числа.
Комбинирование типов LIMIT
Можно сочетать стандартные целые числа с дробными или отрицательными смещениями:
LIMIT 10 OFFSET 0.5 -- 10 строк начиная с середины
LIMIT 10 OFFSET -20 -- 10 строк после пропуска последних 20
Модификатор WITH TIES включает дополнительные строки, у которых значения ORDER BY совпадают со значениями последней строки в пределах заданного ограничения.
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
└───┘
При использовании WITH TIES включаются все строки с тем же значением, что и последнее:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 0, 5 WITH TIES
┌─n─┐
│ 0 │
│ 0 │
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
Строка 6 включена, потому что у неё такое же значение (2), как и у строки 5.
То же самое происходит, когда смещение задаётся с помощью ключевого слова OFFSET:
SELECT * FROM (
SELECT number % 50 AS n FROM numbers(100)
) ORDER BY n LIMIT 3 OFFSET 2 WITH TIES
┌─n─┐
│ 1 │
│ 1 │
│ 2 │
│ 2 │
└───┘
Если пропустить первые 2 строки и взять 3, обычно вернутся 1, 1, 2, но в результат также попадёт вторая 2, потому что её значение совпадает со значением последней строки.
WITH TIES не поддерживается при отрицательных значениях LIMIT.
Этот модификатор можно использовать вместе с модификатором ORDER BY ... WITH FILL.
Недетерминированные результаты: Без предложения ORDER BY возвращаемые строки могут быть произвольными и отличаться от одного выполнения запроса к другому.
Ограничение на стороне сервера: На количество возвращаемых строк также может влиять настройка limit.
- LIMIT BY — Ограничивает число строк для каждой группы значений; полезно, когда нужно получить топ-N результатов в каждой категории.
Последнее изменение 10 июня 2026 г.