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

Основной синтаксис

Выбор первых строк:
LIMIT m
Возвращает первые 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

LIMIT … WITH TIES

Модификатор 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 г.