我不明白为什么需要自连接。有人能给我解释一下吗?
举一个简单的例子会很有帮助。
发布于 2010-03-17 06:39:26
您可以将自联接视为两个相同的表。但是在标准化中,您不能创建表的两个副本,因此您只能使用自联接来模拟两个表。
假设您有两个表:
表emp1
Id Name Boss_id
1 ABC 3
2 DEF 1
3 XYZ 2
表emp2
Id Name Boss_id
1 ABC 3
2 DEF 1
3 XYZ 2
现在,如果您想要获取每个员工的姓名和他或她的老板的姓名:
select c1.Name , c2.Name As Boss
from emp1 c1
inner join emp2 c2 on c1.Boss_id = c2.Id
它将输出下表:
Name Boss
ABC XYZ
DEF ABC
XYZ DEF
发布于 2010-03-17 06:15:52
当您有一个引用自身的表时,这是很常见的。示例: employee表,其中每个员工都可以有一位经理,而您希望列出所有员工及其经理的姓名。
SELECT e.name, m.name
FROM employees e LEFT OUTER JOIN employees m
ON e.manager = m.id
发布于 2010-03-17 06:17:14
假设有一个名为Employee
的表,如下所述。所有员工都有一个经理,经理也是员工(也许首席执行官除外,他的manager_id将为空)
Table (Employee):
int id,
varchar name,
int manager_id
然后,您可以使用以下select来查找所有员工及其经理:
select e1.name, e2.name as ManagerName
from Employee e1, Employee e2 where
where e1.manager_id = e2.id
https://stackoverflow.com/questions/2458519
复制相似问题