什么是自连接,何时使用它?我不理解自连接,能给出一个通俗易懂的例子来说明吗?
当一个表中的数据引用了表本身时,可以使用自连接。
例如,一个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
嗯,一个经典的例子是当你想要获取员工及其直接经理的列表时:
select e.employee as employee, b.employee as boss
from emptable e, emptable b
where e.manager_id = b.empolyee_id
order by 1
通常情况下,它被用于存储在同一表中的行之间存在任何关系的情况。
等等...
自连接是指将一个表与自身进行连接。没有SELF JOIN
关键字,您只需编写一个普通的连接,在其中参与连接的两个表都是相同的表。需要注意的一点是,当您进行自连接时,必须为表使用别名,否则表名将会有歧义。
在需要关联来自同一张表的行对时非常有用,例如父子关系。以下查询返回类别“厨房”的所有直接子类别的名称。
SELECT T2.name
FROM category T1
JOIN category T2
ON T2.parent = T1.id
WHERE T1.name = 'Kitchen'
SQL自连接简单来说就是将表与其本身进行连接的普通连接。
示例:
Select *
FROM Table t1, Table t2
WHERE t1.Id = t2.ID
如果一个表“引用”自身,比如员工表中的managerid是同一表中employeeid的外键,你可以使用自连接。
例如:
SELECT E.name, ME.name AS manager
FROM dbo.Employees E
LEFT JOIN dbo.Employees ME
ON ME.employeeid = E.managerid
AS
吗? - Manu ChadhaAS
是可选的,我将根据查询语句的可读性来决定是否使用。 - D'Arcy Rittich