SQL Server相關子查詢

在本教學中,學習SQL Server相關子查詢,該子查詢是一個依賴於外部查詢值的子查詢。

相關子查詢是使用外部查詢的值的子查詢。 換句話說,它取決於外部查詢的值。 由於這種依賴性,相關子查詢不能作為簡單子查詢獨立執行。

此外,對外部查詢評估的每一行重複執行一次相關子查詢。相關子查詢也稱為重複子查詢

請考慮示例資料庫中的以下products表:

以下示例查找價格等於其類別的最高價格的產品。

SELECT
    product_name,
    list_price,
    category_id
FROM
    production.products p1
WHERE
    list_price IN (
        SELECT
            MAX (p2.list_price)
        FROM
            production.products p2
        WHERE
            p2.category_id = p1.category_id
        GROUP BY
            p2.category_id
    )
ORDER BY
    category_id,
    product_name;

執行上面查詢語句,得到以下結果:

在此示例中,對於由外部查詢評估的每個產品,子查詢查找其類別中所有產品的最高價格。 如果當前產品的價格等於其類別中所有產品的最高價格,則產品將包含在結果集中。 此過程將繼續進行下一個產品,依此類推。

如上所見,相關子查詢對外部查詢評估的每個產品執行一次。


上一篇: SQL Server子查詢語句 下一篇: SQL Server集合操作符