有什么办法可以加入一张同桌的桌子吗?
答案 0 :(得分:3)
自联接是一个表连接自己的连接(即 也称为一元关系),特别是当表有一个 引用自己的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