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

Sam*_*ikh -1 sql-server-2008 correlated-subquery

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

SQL Server 中的相关查询和子查询有什么区别?SQL Server 中是否存在关联子查询和非关联子查询?

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

我想知道。

Jai*_*dra 6

相关子查询是由主外部查询,使得内查询被认为被反复执行所引用的内部子查询。

例子:

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
Run Code Online (Sandbox Code Playgroud)

一个非相关子查询的子查询独立于外部查询的,它可以不依赖于主外部查询自身的执行。

例子:

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
Run Code Online (Sandbox Code Playgroud)

更多在链接。