Sql Server 自加入员工经理关系

Posted

技术标签:

【中文标题】Sql Server 自加入员工经理关系【英文标题】:Sql Server self join for employee manager relationship 【发布时间】:2021-03-16 10:51:58 【问题描述】:
EmpId   EmpName     ManagerId
1       Ramesh      NULL
2       Khiln       1
3       Khaushilk   1
4       Komal       2
5       Muffy       2
6       Jhon        3
7       Richa       3
8       Riya        4

我的数据

    empname     manager1  
1   Ramesh      NULL
2   Khiln       Ramesh 
3   Khaushilk   Ramesh 
4   Komal       Khiln
5   Muffy       Khiln
6   Jhon        Khaushilk
7   Richa       Khaushilk
8   Riya        Komal

现在我想要 2 级经理的姓名,例如 ramesh khiln khaushik 的经理... 我是怎么做到的

【问题讨论】:

【参考方案1】:

这确实是一个自加入:

select e.empname, m.empname as managername
from employees e
left join employees m on m.empid = e.managerid

【讨论】:

【参考方案2】:

以下子查询将为您提供所需的结果。您不需要使用自联接。

select emempid, e.empname, (select m.empname from employees m where m.empid = e.managerid) as managername
from employees e 

【讨论】:

以上是关于Sql Server 自加入员工经理关系的主要内容,如果未能解决你的问题,请参考以下文章

一对多关系的最大约束 - Oracle SQL

只是想知道各种层次结构场景,例如员工经理关系

通过while循环或Reduce,仅基于R的多级员工经理关系

不允许 SQL Server 约束子查询

sqlserver删除外键关系

ER图中2个实体之间的2个关系