Перейти к основному содержанию
Перейти к основному содержанию

Оператор LIMIT

Оператор 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.

Выборка со смещением:

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.

Дробные значения LIMIT

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

SyntaxResult
LIMIT 0.1Первые 10% строк
LIMIT 1 OFFSET 0.5Медианная строка
LIMIT 0.25 OFFSET 0.5Третий квартиль (25% строк после пропуска первых 50%)
Примечание
  • Дробные значения должны иметь тип Float64 и быть больше 0 и меньше 1.
  • Дробные количества строк округляются до ближайшего целого числа.

Комбинирование типов ограничений

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

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.

Примечание

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

Этот модификатор можно комбинировать с модификатором ORDER BY ... WITH FILL.

Особенности

Недетерминированные результаты: Без предложения ORDER BY возвращаемые строки могут быть произвольными и отличаться от выполнения к выполнению одного и того же запроса.

Ограничение на стороне сервера: На количество возвращаемых строк также может влиять настройка limit.

См. также

  • LIMIT BY — Ограничивает число строк в каждой группе значений, полезно для получения N лучших результатов в каждой категории.