什么是使用相关和非相关子查询的场景

时间:2012-06-27 07:10:54

标签: sql-server-2008 correlated-subquery

今天我开始了解SQL Server的一个功能,称为相关查询和非相关查询。然后我想到了某个问题:

SQL Server中的corelated和子查询有什么区别? SQL Server中是否存在corleated子查询和非核心子查询?

如果是,那么我们应该使用其中之一的区别?如果可以的话,用简单的插图解释这个概念。

我想知道。

1 个答案:

答案 0 :(得分:3)

相关子查询是一个内部子查询,它由主外部查询引用,以便内部查询被视为重复执行。

示例:

USE DatabaseName;
GO
SELECT e.EmpID
FROM HumanResources.Emp e
WHERE e.ContactID IN
(
SELECT c.ContactID
FROM Person.Contact c
WHERE MONTH(c.ModifiedDate) = MONTH(e.ModifiedDate)
)
GO

不相关的子查询是子查询,它独立于外部查询,并且可以独立执行,而不依赖于主外部查询。

示例:

USE DatabaseName;
GO
SELECT e.EmpID
FROM HumanResources.Emp e
WHERE e.ContactID IN
(
SELECT c.ContactID
FROM Person.Contact c
WHERE c.Title = 'Mr.'
)
GO

link.

的更多信息