Урок 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;