Sobes.tech
Junior

Какви са подзаявките в SQL?

sobes.tech AI

Отговор от 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;