SQL Server (Transact-SQL) SELF JOIN 是一种常规联接,其中表与其自身联接,即自己与自己连接。

语法

语法SQL Server (Transact-SQL) 中的自连接如下所示:

SELECT A.column1, A.column2, B.column1, B.column2, ...
FROM table A, table B
WHERE condition(s); 

其中 A 和 B 是同一表的不同表别名。

示例:

考虑名为 Employee 和 Contact_Info 的数据库表,其中包含以下记录:

表 1:Employee 表

EmpIDNameCityAgeSalary
1JohnLondon253000
2MarryNew York242750
3JoParis272800
4KimAmsterdam303100
5RameshNew Delhi283000
6HuangBeijing282800

在下面的查询中,Employee 表与其自身连接。该查询用于获取工资相同的员工的姓名和城市。

SELECT A.Name AS Name1, A.City AS City1, 
B.Name AS Name2, B.City AS City2, A.Salary
FROM Employee A, Employee B
WHERE A.Salary = B.Salary AND A.EmpID <> B.EmpID 

这将产生结果如下图:

Name1City1Name2City2Salary
JohnLondonRameshNew Delhi3000
JoParisHuangBeijing2800
RameshNew DelhiJohnLondon3000
HuangBeijingJoParis2800