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集合操作符