Что вернёт запрос SELECT name FROM users WHERE id IN (SELECT user_id FROM orders WHERE created_at >= '2025-01-01')?

AЗапрос вернёт ошибку: подзапрос в IN не может ссылаться на другую таблицу через её столбцы внутри
BЗапрос вернёт всех пользователей: фильтр WHERE id IN (...) не ограничивает результат списком из подзапроса
CЗапрос вернёт пользователей, чей id есть хотя бы в одном заказе за 2025 год по фильтру IN
DЗапрос вернёт пользователей, у которых все заказы сделаны только в 2025 году, через логику IN напрямую
Правильный ответ. Подзапрос в IN возвращает набор значений, и основной запрос фильтрует строки по вхождению в этот набор.

Разбор

Подзапрос SELECT user_id FROM orders WHERE created_at >= '2025-01-01' формирует список идентификаторов пользователей, сделавших хотя бы один заказ с начала 2025 года. Затем WHERE id IN (...) оставляет только тех пользователей из таблицы users, чей id входит в этот список. Это стандартный паттерн для фильтрации по связанной таблице. Условие «все заказы только в 2025 году» формулируется иначе — обычно через NOT EXISTS для записей вне нужного диапазона.

Проверь себя · 1/3разбор после ответа
В таблице users адрес электронной почты хранится в разном регистре: Anna@mail.ru, anna@MAIL.ru и т.д. Как надёжнее всего найти все записи с конкретным адресом вне зависимости от регистра?
Тренировать SQL в Telegram

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