(mysql)如何在一个表中连接两列并显示结果?

xpcnnkqh  于 2021-06-19  发布在  Mysql
关注(0)|答案(3)|浏览(398)

我有一个表,其中有列 employeeNumber 还有 reportsTo 你可以从截图上看到。每个名字都向另一个名字报告。就像 employeeNumber 1165 reportsTo 1143 .
如何显示每个 firstName 以及 lastName 员工和 firstName 以及 lastName 他的“老大”在结果里?
我希望你能理解我。

bgibtngc

bgibtngc1#

您需要使用self join.self join

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

aij0ehis2#

试试这个。它将只返回那些具有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;
yruzcnhs

yruzcnhs3#

你可以试试这个:

SELECT e.firstName, e.lastName, b.firstName, b.lastName
FROM employees as e
LEFT JOIN employees as b on b.employeeNumber = e.reportsTo;

您可以选择每个员工的名字和姓氏
你可以选择他们老板的名字和姓氏
使用left join应该为不向任何人报告的boss返回一些null值
我是在 b.employeeNumber = e.reportsTo 因此,您将从雇员向其报告的employeenumber获取老板信息(例如,雇员1056向雇员1002报告,因此雇员数据是patterson mary,他向雇员murphy diane报告,她的老板)
编辑:
读完哈姆扎·海德尔关于 SELF JOIN (我以前在同一个表上使用join所做的工作的名称)我发现了另一个问题,其中的答案看起来像您想要的,它将为您提供一些信息,让您了解如何使用join SELF JOIN works:什么是自连接?什么时候使用它?
根据答案,这里还有一个解决方案:

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 但是它们都是相同的(左外连接和左连接是相同的吗?)

相关问题