Урок 67 из 84 · Базы данных

Лимит (LIMIT)

Типичные таблицы в веб-проектах содержат огромное число данных, поэтому их никогда не показывают на страницах сразу все. Обычно выводится лишь небольшая часть — скажем, 10 строк. Для ограничения выборки используется LIMIT.

SELECT * FROM users LIMIT 10;

Такой запрос извлечёт 10 записей. Как вы уже знаете, из-за неопределённости порядка сортировки по умолчанию неизвестно, какие это будут записи. Для гарантии обязательно явно определять сортировку. Более того, LIMIT без сортировки практически никогда не используется.

SELECT * FROM users ORDER BY id LIMIT 10;

А что, если пользователь, просмотрев первые 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;

Дополнительные материалы

Отзыв