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 表
EmpID | Name | City | Age | Salary |
---|---|---|---|---|
1 | John | London | 25 | 3000 |
2 | Marry | New York | 24 | 2750 |
3 | Jo | Paris | 27 | 2800 |
4 | Kim | Amsterdam | 30 | 3100 |
5 | Ramesh | New Delhi | 28 | 3000 |
6 | Huang | Beijing | 28 | 2800 |
在下面的查询中,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
这将产生结果如下图:
Name1 | City1 | Name2 | City2 | Salary |
---|---|---|---|---|
John | London | Ramesh | New Delhi | 3000 |
Jo | Paris | Huang | Beijing | 2800 |
Ramesh | New Delhi | John | London | 3000 |
Huang | Beijing | Jo | Paris | 2800 |