Коррелированные подзапросы
Коррелированный подзапрос зависит от внешней строки
Обычный независимый подзапрос можно понять отдельно от внешнего запроса. Коррелированный подзапрос ссылается на столбцы текущей строки внешней выборки, поэтому его смысл меняется вместе с этой строкой.
SELECT u.id, u.name
FROM users AS u
WHERE EXISTS (
SELECT 1
FROM orders AS o
WHERE o.user_id = u.id
AND o.status = 'PAID'
);
Ссылка u.id приходит из внешнего запроса. Для каждого пользователя внутренний запрос проверяет именно его оплаченные заказы.
Читай корреляцию как параметр внутреннего запроса
Полезная мысленная модель: текущая строка внешнего запроса передаёт значение во внутреннюю выборку. Тогда условие вроде o.user_id = u.id становится понятной связью между уровнями.
Коррелированный подзапрос требует особенно внимательно читать псевдонимы.
Всегда отмечай, какой алиас принадлежит внешнему запросу, а какой — внутреннему. Иначе легко потерять направление зависимости.
Проверь себя
Разбор задания
Ментор знает решение и поможет тебе прийти к нему самостоятельно
Войди, чтобы использовать Ментора
Ментор учитывает текущую задачу и историю диалога.
Войти
Проверь важные нюансы и ответ после собственной попытки.
Войди, чтобы посмотреть решение
Решение и разбор доступны после авторизации.
Войти