Подзапросы

Базовый SQL
≈ 1 мин чтения

Подзапрос — это SELECT внутри другого SQL-выражения

Подзапросом называют вложенный SELECT, результат которого использует внешний запрос. Внутренняя выборка может вернуть одно значение, несколько строк или целую таблицу — допустимая форма зависит от места, где она используется.

SELECT name
FROM products
WHERE price > (
    SELECT AVG(price)
    FROM products
);

Внутренний запрос вычисляет среднюю цену. Внешний запрос получает это одно число и использует его в условии price > ....

Сначала разберись с результатом внутреннего запроса

Удобный способ читать подзапрос — начать изнутри. Сначала ответь, какие столбцы и сколько строк способен вернуть внутренний SELECT, а затем посмотри, как внешний запрос может использовать именно такой результат.

Подзапрос не всегда лучше JOIN. Одна и та же задача нередко выражается несколькими способами. На этом этапе важнее выбрать форму, которая ясно отражает смысл запроса; оптимизацию и план выполнения будем рассматривать позже.