Что вернёт запрос 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 год по фильтру INDЗапрос вернёт пользователей, у которых все заказы сделаны только в 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-запросов»
- В таблице `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-запросов» →