В запросе SELECT u.name FROM users u WHERE EXISTS (SELECT 1 FROM orders o WHERE o.user_id = u.id) — как работает EXISTS?

AПодзапрос в EXISTS проверяет наличие хотя бы одной строки: при наличии условие истинно
BПодзапрос в EXISTS обязан вернуть единственную строку, иначе возникает ошибка выполнения
CПодзапрос в EXISTS возвращает список значений, который служит фильтром во внешнем запросе
DПодзапрос в EXISTS возвращает количество совпавших строк и сравнивает его с порогом
Правильный ответ. EXISTS возвращает TRUE, если подзапрос возвращает хотя бы одну строку, иначе — FALSE.

Разбор

EXISTS не анализирует конкретные значения из подзапроса — важен сам факт наличия строк. Для каждой строки внешней таблицы подзапрос проверяет, есть ли хотя бы одна совпадающая строка по условию связи. Если есть — строка попадает в результат. Именно поэтому в подзапросе часто пишут SELECT 1 — возвращаемое значение не имеет значения, проверяется только наличие.

Проверь себя · 1/3разбор после ответа
Нужно получить 5 самых дешёвых товаров категории 'electronics' из таблицы products. Какой запрос верный?
Тренировать SQL в Telegram

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