如何使用自引用外键获取表的列?

时间:2014-08-13 11:37:16

标签: sql-server

我有一个如下所示的表结构:

Id      Name    Sal     ManagerId
1       a       5000       2
2       b       7000       3
3       c       6000       1

我需要这样的输出

Id     Name    Sal     Manager
1      a       5000      b
2      b       7000      c
3      c       6000      a

我该怎么做?

1 个答案:

答案 0 :(得分:2)

您必须使用自我JOIN将一个表链接到自身:

SELECT t1.Id, t1.Name, t1.Sal, t2.ManagerName AS Manager
FROM TableName t1 INNER JOIN TableName t2 
    ON t1.ManagerID = t2.Id

如果ManagerId可以为空,您可能需要使用OUTER JOIN

SELECT t1.Id, t1.Name, t1.Sal, COALESCE(t2.ManagerName, '<no manager>') AS Manager
FROM TableName t1 LEFT OUTER JOIN TableName t2 
    ON t1.ManagerID = t2.Id