每个子查询都有所谓于的外部查询。独立子查询是独立于其外部查询的子查询。在逻辑上,独立子查询在执行外部查询之前只要先执行一次,接着外部查询再使用子查询的结果继续进行查询。
1.独立标量子查询
标量子查询是返回单个值的子查询,而不管它是不是独立子查询。标量子查询可以出现在外部查询中期望使用单个值的任何地方(WHERE、SELECT,等等)。
DECLARE @maxid AS INT=(SELECT MAX(orderid) FROM Orders);
2.独立多值子查询
多值子查询是在一个列中返回多个值的子查询,而不管子查询是不是独立的。一些谓词(例如IN谓词)可以处理多值子查询。
SELECT custid,orderid,orderdate,empid FROM dbo.Orders
WHERE custid IN (SELECT custid FROM Customers WHERE country=N'USA');