Нужно показать третью страницу каталога товаров: по 20 товаров на страницу, сортировка по цене по возрастанию. Какой запрос корректный?

ASELECT product_id, price FROM products ORDER BY price ASC LIMIT 20 OFFSET 20
BSELECT product_id, price FROM products ORDER BY price DESC LIMIT 20 OFFSET 40
CSELECT product_id, price FROM products ORDER BY price ASC LIMIT 20 OFFSET 40
DSELECT product_id, price FROM products ORDER BY price ASC LIMIT 20
Правильный ответ. Для страницы N при размере P используйте LIMIT P OFFSET (N-1)*P вместе с явной сортировкой.

Разбор

Третья страница при размере 20 означает, что нужно пропустить первые 40 строк и взять следующие 20: LIMIT 20 OFFSET 40. Так как требуется сортировка по цене по возрастанию, добавляем ORDER BY price ASC. Без сортировки страницы не будут стабильными, потому что исходный порядок строк не гарантирован. Сортировка по убыванию или офсет 20 дадут неверный сегмент данных.

Проверь себя · 1/3разбор после ответа
Нужно вывести только оплаченные заказы (status = 'paid') и отсортировать их по времени создания от новых к старым. Какой запрос соответствует задаче?
Тренировать SQL в Telegram

Ещё вопросы по теме «Основы SQL-запросов»