MySQL LIMIT & OFFSET с примерами

Что такое ключевое слово LIMIT?

Ключевое слово limit используется для ограничения количества строк, возвращаемых в результате запроса.

Его можно использовать в сочетании с командами SELECT, UPDATE или DELETE. Синтаксис ключевого слова LIMIT.

Синтаксис ключевого слова LIMIT следующий.

SELECT {fieldname(s) | *} FROM tableName(s) [WHERE condition] LIMIT  N;

ВОТ

  • «ВЫБРАТЬ {имя поля | *} FROM tableName(s)” это Оператор SELECT содержащий поля, которые мы хотели бы вернуть в нашем запросе.
  • «[ГДЕ условие]» не является обязательным, но если оно указано, его можно использовать для указания фильтра в наборе результатов.
  • «ЛИМИТ Н» это ключевое слово и N — это любое число, начиная с 0, поставив 0, поскольку ограничение не возвращает никаких записей в запросе. Если ввести число, например 5, вернет пять записей. Если записей в указанной таблице меньше N, то в наборе результатов возвращаются все записи из запрошенной таблицы.

Давайте посмотрим на пример –

SELECT *  FROM members LIMIT 2;
membership_ number full_ names gender date_of _birth date_of _registration physical_ address postal_ address contact_ number email credit_ card_ number
1 Janet Jones Female 21-07-1980 NULL First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm NULL
2 Janet Smith Jones Female 23-06-1980 NULL Melrose 123 NULL NULL jj@fstreet.com NULL

Как видно на скриншоте выше, возвращены только два участника.

Получение списка из десяти (10) участников только из базы данных

Предположим, мы хотим получить список первых 10 зарегистрированных участников из базы данных Myflix. Для этого мы будем использовать следующий скрипт.

SELECT *  FROM members LIMIT 10;

Выполнение приведенного выше сценария дает нам результаты, показанные ниже.

membership_ number full_ names gender date_of _birth date_of _registration physical_ address postal_ address contact_ number email credit_ card_ number
1 Janet Jones Female 21-07-1980 NULL First Street Plot No 4 Private Bag 0759 253 542 janetjones@yagoo.cm NULL
2 Janet Smith Jones Female 23-06-1980 NULL Melrose 123 NULL NULL jj@fstreet.com NULL
3 Robert Phil Male 12-07-1989 NULL 3rd Street 34 NULL 12345 rm@tstreet.com NULL
4 Gloria Williams Female 14-02-1984 NULL 2nd Street 23 NULL NULL NULL NULL
5 Leonard Hofstadter Male NULL NULL Woodcrest NULL 845738767 NULL NULL
6 Sheldon Cooper Male NULL NULL Woodcrest NULL 976736763 NULL NULL
7 Rajesh Koothrappali Male NULL NULL Woodcrest NULL 938867763 NULL NULL
8 Leslie Winkle Male 14-02-1984 NULL Woodcrest NULL 987636553 NULL NULL
9 Howard Wolowitz Male 24-08-1981 NULL SouthPark P.O. Box 4563 987786553 lwolowitz[at]email.me NULL

Обратите внимание, что в нашем запросе было возвращено только 9 элементов, поскольку N в предложении LIMIT больше, чем общее количество записей в нашей таблице.

Перепишите приведенный выше сценарий следующим образом.

SELECT *  FROM members LIMIT 9;

Возвращает только 9 строк в нашем наборе результатов запроса.

Использование OFF SET в запросе LIMIT

Территория КОМПЕНСИРОВАТЬ значение также чаще всего используется вместе с ключевым словом LIMIT. Значение OFF SET позволяет нам указать, с какой строки начинать получение данных.

Предположим, мы хотим получить ограниченное количество элементов, начиная с середины строк. Для достижения этой цели мы можем использовать ключевое слово LIMIT вместе со значением смещения. Показанный ниже скрипт получает данные, начиная со второй строки, и ограничивает результаты до 2.

SELECT * FROM `members` LIMIT 1, 2;

Выполнение приведенного выше сценария в MySQL Workbench против myflixdb дает следующие результаты.

membership_ number full_ names gender date_of _birth date_of _registration physical_ address postal_ address contact_ number email credit_ card_ number
2 Janet Smith Jones Female 23-06-1980 NULL Melrose 123 NULL NULL jj@fstreet.com NULL
3 Robert Phil Male 12-07-1989 NULL 3rd Street 34 NULL 12345 rm@tstreet.com NULL

Note that here OFFSET = 1 Hence row#2 is returned & Limit = 2, Hence only 2 records are returned

Когда нам следует использовать ключевое слово LIMIT?

Предположим, мы разрабатываем приложение, работающее поверх myflixdb. Наш системный разработчик попросил нас ограничить количество записей, отображаемых на странице, скажем, 20 записями на страницу, чтобы избежать медленной загрузки. Как нам реализовать систему, отвечающую таким требованиям пользователей? Ключевое слово LIMIT пригодится в таких ситуациях. Мы сможем ограничить результаты, возвращаемые запросом, до 20 записей на страницу.

Резюме

  • Ключевое слово LIMIT используется для ограничения количества строк, возвращаемых из набора результатов.
  • Число LIMIT может быть любым числом от нуля (0) вверх. Если в качестве ограничения указано ноль (0), строки из набора результатов не возвращаются.
  • Значение OFF SET позволяет нам указать, с какой строки начинать получение данных.
  • Его можно использовать в сочетании с командами SELECT, UPDATE или DELETE. Синтаксис ключевого слова LIMIT.