若陳述式中的子查詢與外部查詢都參考到相同的資料表,這些陳述式將可敘述成自我聯結 (將資料表聯結至本身)。例如,您可以使用子查詢來尋找與 Terri Duffy 的經理相同的員工:
USE AdventureWorks;
GO
SELECT EmployeeID, ManagerID
FROM HumanResources.Employee
WHERE ManagerID IN
(SELECT ManagerID
FROM HumanResources.Employee
WHERE EmployeeID = 12)
以下為結果集:
EmployeeID ManagerID
----------- -----------
6 109
12 109
21 109
42 109
140 109
148 109
273 109
(7 row(s) affected)
您也可以使用自我聯結:
USE AdventureWorks;
GO
SELECT e1.EmployeeID, e1.ManagerID
FROM HumanResources.Employee AS e1
INNER JOIN HumanResources.Employee AS e2
ON e1.ManagerID = e2.ManagerID
AND e2.EmployeeID = 12
資料表別名是必要的,因為聯結至本身的資料表將出現在兩個不同的角色上。別名也可用於參考到內部與外部查詢中的同一個資料表的巢狀查詢之中。
USE AdventureWorks;
GO
SELECT e1.EmployeeID, e1.ManagerID
FROM HumanResources.Employee AS e1
WHERE e1.ManagerID IN
(SELECT e2.ManagerID
FROM HumanResources.Employee AS e2
WHERE e2.EmployeeID = 12)
外顯別名可讓您清楚地瞭解,參考到子查詢中的 HumanResources.Employee 和外部查詢中的參考,兩者代表的意義並不相同。