Что вернёт запрос SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE created_at >= '2025-01-01')?
AЗапрос вернёт ошибку, потому что подзапрос в
IN не может ссылаться на другую таблицуBЗапрос вернёт всех пользователей, потому что подзапрос выполняется отдельно от основного
CЗапрос вернёт только тех пользователей, чей
id есть хотя бы в одном заказе за 2025 годDЗапрос вернёт пользователей, у которых все заказы сделаны только в 2025 году
Правильный ответ. Подзапрос в
IN возвращает набор значений, и основной запрос фильтрует строки по вхождению в этот набор.Разбор
Подзапрос SELECT user_id FROM orders WHERE created_at >= '2025-01-01' формирует список идентификаторов пользователей, сделавших хотя бы один заказ с начала 2025 года. Затем WHERE id IN (...) оставляет только тех пользователей из таблицы users, чей id входит в этот список. Это стандартный паттерн для фильтрации по связанной таблице.
Проверь себя · 1/3разбор после ответа
Что можно корректно утверждать про результат запроса
SELECT user_id FROM users LIMIT 10, если в запросе нет ORDER BY?Ещё вопросы по теме «Основы 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-запросов» →