在本教程中,学习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;
执行上面查询语句,得到以下结果:
在此示例中,对于由外部查询评估的每个产品,子查询查找其类别中所有产品的最高价格。 如果当前产品的价格等于其类别中所有产品的最高价格,则产品将包含在结果集中。 此过程将继续进行下一个产品,依此类推。
如上所见,相关子查询对外部查询评估的每个产品执行一次。