Типичные таблицы в веб-проектах содержат огромное число данных, поэтому их никогда не показывают на страницах сразу все. Обычно выводится лишь небольшая часть, например, 50 строк. Чтобы ограничить выборку, используется LIMIT
. В этом уроке разберем, как работать с таким запросом.
Как ограничивать выборку таблицы
Представим, что нам нужно извлечь 10 записей. Для этого выполним такой запрос:
SELECT * FROM users LIMIT 10;
Из-за неопределенности порядка сортировки по умолчанию неизвестно, какие это будут записи. Для гарантии обязательно определять сортировку. LIMIT
без сортировки практически никогда не используется. Поэтому нужно задать ее:
SELECT * FROM users ORDER BY id LIMIT 10;
Как показать все данные по выборкам
Допустим, пользователь хочет посмотреть следующие 10. Это реализуется через пагинацию — механизм, который позволяет перемещаться по страницам. Чтобы реализовать его, одного LIMIT
недостаточно. Еще понадобится смещение OFFSET
:
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 10;
Этот запрос отсортирует пользователей, пропустит первые 10 за счет части OFFSET 10
и возьмет 10 записей. Если менять OFFSET
, можно обойти все данные в таблице:
-- выбрать записи с 21 по 30
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 20;
-- выбрать записи с 31 по 40
SELECT * FROM users ORDER BY id LIMIT 10 OFFSET 30;
Выводы
В этом уроке мы изучили функцию LIMIT
, которая позволяет выводить лишь небольшую часть данных и ограничивать выборку.
В итоге с помощью LIMIT
можно ограничить выборку данных в таблице, а если вместе с ним применить ORDER BY
и OFFSET
, то можно задать правильную сортировку и посмотреть записи по всем выборкам.
Дополнительные материалы
Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты