Нужно показать 3-ю страницу каталога товаров: по 20 товаров на страницу, сортировка по цене по возрастанию (price). Какой запрос корректный?
A
SELECT product_id, price FROM products ORDER BY price ASC LIMIT 20 OFFSET 20B
SELECT product_id, price FROM products ORDER BY price DESC LIMIT 20 OFFSET 40C
SELECT product_id, price FROM products ORDER BY price ASC LIMIT 20 OFFSET 40D
SELECT 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-запросов»
- В таблице `users` нужно выбрать только активных пользователей из России или Казахстана. Какой `WHERE` соответствует требованию?
- Для отчёта по регистрациям вам нужны только `user_id` и `signup_at` из таблицы `users`. Какой запрос лучше соответствует задаче и не тянет лишние поля?
- Нужно получить 20 самых новых событий из таблицы `events` (по времени `event_time`) и показать их в выдаче сверху. Какой запрос верный?
- Вы строите выдачу «последние заказы» и используете `LIMIT 50`. Поле `created_at` не уникально (много заказов в одну секунду). Какой `ORDER BY` лучше, чтобы порядок был детерминированным?
- Что можно корректно утверждать про результат запроса `SELECT user_id FROM users LIMIT 10`, если в запросе нет `ORDER BY`?
- Все вопросы по «Основы SQL-запросов» →