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

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 LIMIT 20 OFFSET 40
Правильный ответ. Для страницы N при размере страницы P используйте LIMIT P OFFSET (N-1)*P вместе с явным ORDER BY.

Разбор

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

Проверь себя · 1/3разбор после ответа
Нужно получить 10 последних событий конкретного пользователя (user_id = 42) из таблицы events. Какой запрос корректнее всего решает задачу?
Тренировать SQL в Telegram

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