【问题标题】:how to apply join on self table如何在自我表上应用联接
【发布时间】:2020-10-27 01:30:47
【问题描述】:

我的 Emp 表有 3 列 [EmpId]、[EmpName]、[MgrId] MgrId是同一个Emp表的外键,EmpId是主键

EmpId   EmpName MgrId
1       A       NULL
2       B       1
3       C       2
4       D       3
5       E       4

我需要以下输出

EmpName MgrName
A        
B       A
C       B
D       C
E       D

我正在使用以下查询,但输出错误

SELECT E1.EmpName, E1.Empname as mgrName
FROM Emp E1, Emp E2 
WHERE E1.EmpId = E2.EmpId

【问题讨论】:

    标签: sql left-join hierarchical-data self-join


    【解决方案1】:

    这确实是一个自连接,但是:

    • 加入条件需要修正:你想匹配经理和员工

    • 必须是LEFT JOIN,因此没有经理的员工不会被淘汰

    • 你想要select子句中的经理姓名

    所以:

    SELECT E1.EmpName, E2.Empname as mgrName
    FROM Emp E1
    LEFT JOIN Emp E2 ON E2.EmpID = E1.MgrID
    

    【讨论】:

      【解决方案2】:
      SELECT E1.EMPNAME, E2.EMPNAME AS MGRNAME
      FROM EMP E1 
      LEFT JOIN EMP E2 
      ON E1.MGR = E2.EMPID
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-30
        • 1970-01-01
        • 1970-01-01
        • 2011-02-21
        • 2022-07-19
        • 1970-01-01
        相关资源
        最近更新 更多