【问题标题】:(MySQL) How to join two columns in one table and display results?(MySQL) 如何在一张表中连接两列并显示结果?
【发布时间】:2019-03-27 10:18:03
【问题描述】:

我有一张表,其中列有 employeeNumberreportsTo,正如您从屏幕截图中看到的那样。每个名字都向另一个名字报告。喜欢employeeNumber 1165 reportsTo 1143

如何在结果中显示员工的每个firstNamelastName 以及他的“老板”的firstNamelastName

希望你能理解我。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你可以试试这个:

    SELECT e.firstName, e.lastName, b.firstName, b.lastName
    FROM employees as e
    LEFT JOIN employees as b on b.employeeNumber = e.reportsTo;
    
    1. 您选择每个员工的名字和姓氏
    2. 您选择他们老板的名字和姓氏
    3. 使用左连接应该为不向任何人报告的老板返回一些 NULL 值
    4. 我在b.employeeNumber = e.reportsTo 上进行了联接,因此您将从员工报告的员工编号获取老板信息(例如,员工 1056 向员工 1002 报告,因此员工数据是帕特森玛丽,他向员工墨菲黛安报告,她的老板)

    编辑:

    阅读 Hamza Haider 关于 SELF JOIN 的回答(我之前在同一张表上加入的名称)后,我发现另一个问题的答案看起来像你想要的,它会给你一些信息来理解 @ 987654326@ 作品:What is SELF JOIN and when would you use it?

    根据答案,这里是另一种解决方案:

    SELECT 
        e1.FirstName, 
        e1.LastName,
        e2.FirstName as SupervisorFirstName, 
        e2.LastName as SupervisorLastName
    FROM employee e1
    LEFT OUTER JOIN employee e2 on e2.employeeNumber = e1.reportsTo
    

    区别在于LEFT OUTER JOIN 而不是LEFT JOIN,但它们都相同(Are left outer joins and left joins the same?

    【讨论】:

      【解决方案2】:

      试试这个。它只会返回那些有 reportsTo 值(不是空值)的。

      SELECT 
          e.firstName,
          e.lastName,
          r.firstName AS bossFirstName,
          r.lastName AS bossLastName
      FROM employees AS e
      INNER JOIN employees AS r ON e.employeeNumber = r.reportsTo;
      

      如果您想查看每个员工,即使它没有 reportsTo 值,您可以使用 LEFT JOIN:

      SELECT 
          e.firstName,
          e.lastName,
          r.firstName AS bossFirstName,
          r.lastName AS bossLastName
      FROM employees AS e
      LEFT JOIN employees AS r ON e.employeeNumber = r.reportsTo;
      

      【讨论】:

        【解决方案3】:

        你需要使用self join。Self Join

        select * from Employees AS Employees1  join Employees  as Employees2 ON Employees1.employeeNumber = Employees2.reportsTo
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-17
          • 2015-11-07
          • 1970-01-01
          相关资源
          最近更新 更多