Выражения LIMIT и OFFSET

Выражение LIMIT

Выражение LIMIT является модификатором вывода. Логически оно применяется в самом конце запроса. Выражение LIMIT ограничивает количество выводимых строк.

Обратите внимание, что хотя LIMIT можно использовать без условия ORDER BY, в таком случае результаты могут быть не детерминированными. Тем не менее, это может быть полезно, например, когда вы хотите получить быстрый срез данных.

Выражение OFFSET

Выражение OFFSET указывает, с какой позиции начинать считывание значений, т. е. первые OFFSET значений игнорируются.

Синтаксис

SELECT ...
FROM ...
[ ORDER BY ... ]
LIMIT <count> [ OFFSET <start> ]
[ ... ]

Параметры

  • <count>
    Количество возвращаемых строк. Должно быть неотрицательной целой величиной.
    Значение NULL также принимается и рассматривается как неограниченное.


  • OFFSET <start>
    Номер строки, после которой возвращаются ограниченные/извлеченные строки. Должен быть неотрицательной целой величиной.
    Если OFFSET опущено, вывод начинается с первой строки в наборе результатов.
    Значение NULL также принимается и рассматривается как неограниченное (т. е. строки пропускаться не будут).

Примеры

  • Выберем первые 5 дней из таблицы дней недели:

    SELECT *
    FROM weekdays
    LIMIT 5;
    +--------+-----------+
    | number |    name   |
    +--------+-----------+
    | 1      | Monday    |
    +--------+-----------+
    | 2      | Tuesday   |
    +--------+-----------+
    | 3      | Wednesday |
    +--------+-----------+
    | 4      | Thursday  |
    +--------+-----------+
    | 5      | Friday    |
    +--------+-----------+
  • Выберем 5 строк из таблицы дней недели, начиная с позиции 1 (т. е. игнорируя первую строку):

    SELECT *
    FROM weekdays
    LIMIT 5
    OFFSET 1;
    +--------+-----------+
    | number |    name   |
    +--------+-----------+
    | 2      | Tuesday   |
    +--------+-----------+
    | 3      | Wednesday |
    +--------+-----------+
    | 4      | Thursday  |
    +--------+-----------+
    | 5      | Friday    |
    +--------+-----------+
    | 6      | Saturday  |
    +--------+-----------+