我可以在SQL Server中加入自己的表吗?

时间:2015-03-24 10:47:00

标签: sql sql-server

有什么办法可以加入一张同桌的桌子吗?

4 个答案:

答案 0 :(得分:3)

这称为Self Join

引用w3resource.com

  

自联接是一个表连接自己的连接(即   也称为一元关系),特别是当表有一个   引用自己的PRIMARY KEY的FOREIGN KEY。加入表格   本身意味着表的每一行都与自身结合   与桌子的每一行。

     

可以将自联接视为同一个表的两个副本的联接。   该表实际上并未复制,但SQL执行命令   虽然它是。

一个典型的例子:

SELECT  a.ID, b.NAME, a.SALARY 
FROM CUSTOMERS a, CUSTOMERS b
WHERE a.SALARY < b.SALARY;

答案 1 :(得分:1)

您可以使用自我加入。

解释自联接的示例。假设您有一张表格,其中包含员工和主管的详细信息:

EmployeeName      SupervisorName
ABC                XYZ
DEF                YZX
PQR                XYZ
HJK                PQR

现在,如果我想找到所有员工与员工ABC有相同主管的人。

可能的方法:

方法1

SELECT employeename
FROM employee
WHERE SupervisorName = "ABC"

因此,我们需要拥有我们想要获取详细信息的主管的名称(荒谬的

方法2:

SELECT employeename
FROM employee
WHERE SupervisorName in
( SELECT SupervisorName 
FROM employee
WHERE employee_name = "ABC")

这个效率不如使用自我加入

方法3: - 使用自我加入

SELECT e1.employeename
FROM employee e1 self join employee e2
on e1.SupervisorName  = e2.SupervisorName 
AND e2.employeename="ABC";

答案 2 :(得分:0)

是的,如果您为表格设置了别名

... from my_table join my_table as 'othertable' ON ...

答案 3 :(得分:0)

以下链接描述了sql server中的自联接: https://technet.microsoft.com/en-us/library/ms177490%28v=sql.105%29.aspx