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 |
Обратите внимание, что в этом альтернативном синтаксисе аргументы переключают свои позиции:
первый аргумент представляет количество строк, возвращаемых в результирующий набор;
второй аргумент представляет собой смещение.