MySQL
Ограничение и смещение
Поиск…
Синтаксис
- SELECT column_1 [, column_2]
FROM table_1
ORDER BY order_column
LIMIT row_count [OFFSET row_offset] - SELECT column_1 [, column_2]
FROM table_1
ORDER BY order_column
LIMIT [row_offset,] row_count
замечания
«Предел» может означать «Максимальное количество строк в таблице».
«Смещение» означает выбор из номера row
(чтобы не путать значение первичного ключа или любое значение данных поля)
Ограничение и смещение
Учитывая следующую таблицу users
:
Я бы | имя пользователя |
---|---|
1 | User1 |
2 | Пользователь2 |
3 | User3 |
4 | Пользователь4 |
5 | USER5 |
Чтобы ограничить количество строк в результирующем наборе запроса SELECT
, предложение LIMIT
может использоваться вместе с одним или двумя положительными целыми числами в качестве аргументов (включая нуль).
Предложение LIMIT
с одним аргументом
Когда используется один аргумент, набор результатов будет ограничен только числом, указанным следующим образом:
SELECT * FROM users ORDER BY id ASC LIMIT 2
Я бы | имя пользователя |
---|---|
1 | User1 |
2 | Пользователь2 |
Если значение аргумента равно 0
, набор результатов будет пустым.
Также обратите внимание, что предложение ORDER BY
может быть важным, чтобы указать первые строки набора результатов, которые будут представлены (при заказе другим столбцом).
Предложение LIMIT
с двумя аргументами
Когда в предложении LIMIT
используются два аргумента:
- первый аргумент представляет строку, из которой будут представлены строки результирующего набора, - это число часто упоминается как смещение , так как оно представляет строку, предшествующую начальной строке ограниченного результирующего набора. Это позволяет аргументу принимать
0
как значение и, таким образом, принимать во внимание первую строку набора без ограничений. - второй аргумент указывает максимальное количество строк, возвращаемых в результирующий набор (аналогично примеру одного аргумента).
Поэтому запрос:
SELECT * FROM users ORDER BY id ASC LIMIT 2, 3
Представляет следующий набор результатов:
Я бы | имя пользователя |
---|---|
3 | User3 |
4 | Пользователь4 |
5 | USER5 |
Обратите внимание, что когда аргумент offset равен 0
, результирующий набор будет эквивалентен одному аргументу LIMIT
. Это означает, что следующие два запроса:
SELECT * FROM users ORDER BY id ASC LIMIT 0, 2
SELECT * FROM users ORDER BY id ASC LIMIT 2
Произведите тот же набор результатов:
Я бы | имя пользователя |
---|---|
1 | User1 |
2 | Пользователь2 |
Ключевое слово OFFSET
: альтернативный синтаксис
Альтернативный синтаксис для предложения LIMIT
с двумя аргументами заключается в использовании ключевого слова OFFSET
после первого аргумента следующим образом:
SELECT * FROM users ORDER BY id ASC LIMIT 2 OFFSET 3
Этот запрос вернет следующий набор результатов:
Я бы | имя пользователя |
---|---|
3 | User3 |
4 | Пользователь4 |
Обратите внимание, что в этом альтернативном синтаксисе аргументы переключают свои позиции:
первый аргумент представляет количество строк, возвращаемых в результирующий набор;
второй аргумент представляет собой смещение.