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