Что вернёт запрос 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 в Telegram

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