Назад к вопросам
Junior
120
questionbank

Что такое подзапросы в SQL?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

Подзапрос (или вложенный запрос) в SQL — это запрос SELECT, вставленный внутрь другого оператора SQL (SELECT, INSERT, UPDATE, DELETE, CREATE TABLE). Подзапрос выполняется первым, и его результат используется внешним запросом.

  • Использование:

    • В предложении WHERE для фильтрации данных.
    • В предложении FROM как виртуальная таблица (производная таблица).
    • В предложении SELECT для вывода агрегированных или связанных данных (скалярный подзапрос).
    • С операторами IN, EXISTS, ANY, ALL.
  • Преимущества:

    • Позволяют выполнять сложные выборки данных.
    • Улучшают читаемость запросов по сравнению со сложными соединениями.
    • Могут использоваться в качестве источника данных.
  • Типы:

    • Скалярный: Возвращает одно значение (одну строку и один столбец).
    • Многострочный: Возвращает один столбец и несколько строк. Используется с IN, ANY, ALL.
    • Многоколоночный: Возвращает несколько столбцов. Используется редко.
    • Коррелированный: Зависит от внешнего запроса и выполняется для каждой строки внешнего запроса.

Пример использования в WHERE:

SELECT
    order_id,
    customer_id,
    order_date
FROM
    orders
WHERE
    customer_id IN (
        SELECT
            customer_id
        FROM
            customers
        WHERE
            city = 'New York'
    );

Пример использования в FROM:

SELECT
    customer_name,
    total_orders
FROM (
    SELECT
        c.customer_name,
        COUNT(o.order_id) AS total_orders
    FROM
        customers c
    JOIN
        orders o ON c.customer_id = o.customer_id
    GROUP BY
        c.customer_name
) AS customer_order_counts
WHERE
    total_orders > 10;