什么是自加入以及何时使用它?我不明白自我加入,所以用一个例子来做一个外行的解释会很棒。
问问题
474803 次
5 回答
189
当表本身引用数据时,您使用自联接。
例如,一个Employee
表可能有一SupervisorID
列指向当前雇员的老板。
要在一行中查询数据并获取两个人的信息,您可以像这样自加入:
select e1.EmployeeID,
e1.FirstName,
e1.LastName,
e1.SupervisorID,
e2.FirstName as SupervisorFirstName,
e2.LastName as SupervisorLastName
from Employee e1
left outer join Employee e2 on e1.SupervisorID = e2.EmployeeID
于 2010-07-29T11:37:39.650 回答
76
一个典型的例子是你想获得一份员工及其直属经理的名单:
select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1
它基本上用于存储在同一个表中的行之间存在任何关系的地方。
- 雇员。
- 多层次营销。
- 机械零件。
等等...
于 2010-07-29T11:39:35.227 回答
25
自联接只是当您将表与自身联接时。没有SELF JOIN
关键字,您只需编写一个普通的连接,连接中涉及的两个表都是同一个表。需要注意的一件事是,当您进行自联接时,必须为表使用别名,否则表名将不明确。
当您想要关联同一个表中的行对时,它很有用,例如父子关系。以下查询返回类别“厨房”的所有直接子类别的名称。
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
于 2010-07-29T11:38:29.650 回答
11
SQL 自连接只是一个普通连接,用于将表连接到自身。
例子:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
于 2010-07-29T11:38:56.753 回答
6
您将在一个“引用”自身的表上使用自联接 - 例如,一个员工表,其中 managerid 是同一张表上的employeeid 的外键。
例子:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
于 2010-07-29T11:38:31.863 回答