- 1. Основы соединений (JOIN) в SQL
- 2. INNER JOIN - Соединение совпадающих строк
- 3. LEFT JOIN - Включение всех записей из левой таблицы
- 4. RIGHT JOIN - Включение всех записей из правой таблицы
- 5. FULL OUTER JOIN - Объединение всех данных из обеих таблиц
- 6. CROSS JOIN - Декартово произведение
- 7. SELF JOIN - Соединение таблицы с самой собой
- 8. Практические сценарии и методы использования JOIN
- 9. Алгоритмы JOIN
Урок 2.6: Ограничение результатов с помощью LIMIT и OFFSET
При работе с большими таблицами часто не требуется извлекать каждую строку. Иногда нужны только первые несколько записей или необходимо реализовать «пагинацию» (показ результатов на странице 1, странице 2 и т. д.). Для этих задач используются операторы LIMIT и OFFSET.
Оператор LIMIT
Оператор LIMIT используется для указания максимального количества строк, которые должен вернуть запрос.
Синтаксис
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name
LIMIT count;
count: Максимальное количество возвращаемых строк.
Примечание: Настоятельно рекомендуется использовать
LIMITвместе сORDER BY. Без сортировки «первые X строк» могут быть любыми строками, в зависимости от того, как движок базы данных оптимизирует запрос.
Оператор OFFSET
Оператор OFFSET указывает базе данных пропустить определенное количество строк перед тем, как начать возвращать результаты.
Синтаксис
SELECT column1, column2, ...
FROM table_name
ORDER BY column_name
LIMIT count OFFSET skip;
skip: Количество строк, которые нужно пропустить перед началом возврата данных.
Пагинация: сочетание LIMIT и OFFSET
Пагинация — это процесс разделения большого набора результатов на отдельные страницы. Это наиболее распространенный вариант использования комбинации LIMIT и OFFSET.
- Страница 1:
LIMIT 10 OFFSET 0(Строки 1–10) - Страница 2:
LIMIT 10 OFFSET 10(Строки 11–20) - Страница 3:
LIMIT 10 OFFSET 20(Строки 21–30)
Примеры
Пример 1: 5 самых длинных фильмов
Этот запрос находит 5 самых длинных фильмов в таблице film.
SELECT title, length
FROM film
ORDER BY length DESC
LIMIT 5;
Пример 2: Пропуск записей
Этот запрос пропускает первых 10 актеров (отсортированных по ID) и возвращает следующие 5.
SELECT actor_id, first_name, last_name
FROM actor
ORDER BY actor_id
LIMIT 5 OFFSET 10;
Ключевые выводы этого урока:
LIMITограничивает количество строк в результирующем наборе.OFFSETпропускает указанное количество строк перед возвратом данных.- Сочетание
LIMITиOFFSET— стандартный способ реализации пагинации. - Всегда используйте
ORDER BYс этими операторами для обеспечения предсказуемых результатов. Действительно предсказуемый результат достигается только при сортировке по уникальным значениям (или по комбинации столбцов, задающей уникальный порядок).
В следующем уроке мы увидим, как объединить WHERE, ORDER BY и LIMIT для создания мощных и точных запросов.