查询employee表的自联接

时间:2014-09-19 00:57:27

标签: sql sql-server sql-server-2008 sql-server-2012

假设我有一张员工表。我有名称和经理列。假设有10名员工,其中2名是经理。因此,Name将有10个名称,Manager名称将位于Manager列中。

如何使用自我加入?我只是在学习自我加入

1 个答案:

答案 0 :(得分:2)

要执行自联接,只需为同一个表提供不同的别名即可。 例如,在您的员工表中,您将拥有一个managerid - 它存储经理的ID。 然后获取经理的名字 - 你只需自己加入managerid上的employee表 - 使用不同的别名(我在下面的例子中使用了m):

例如,您的表格如下所示:

CREATE TABLE Employees (id INT, Name VARCHAR(20), ManagerId INT);

要获得员工姓名及其经理姓名,您可以这样做:

SELECT 
e.Name AS EmployeeName,
ISNULL(m.Name, 'No Manager') AS ManagerName
FROM employee e 
LEFT JOIN employee m on m.id = e.ManagerId

如果您想了解有关自我加入的更多信息,请参阅here