如何在单个查询中集成同一个表的2个SQL查询的结果?

时间:2018-04-01 04:56:28

标签: mysql

我是SQL的新手,我刚开始学习SQL。我有一个包含3列的Employee表:

  • id int,
  • name varchar(255),
  • manager_id int

当manager_id与id相同时表示员工将有另一名员工作为经理。

例如:

员工" AAA"将有" BBB"作为他的经理,如果员工记录有员工的身份" BBB"作为manager_id。

我怎么能写一个单独的SQL查询,它会给我"员工姓名"及其相应的" Manager_name"。

以下是表格,到目前为止尝试的查询以及预期结果的详细信息。

员工表:

select * from test.employee;

enter image description here

查询1:

SELECT name as manager_name FROM test.employee  
 where manager_id IN(select id from test.employee)
 group by manager_id;

enter image description here

查询2:

 SELECT name as emp_name FROM test.employee

enter image description here

如何实现查询1和查询2的组合结果,如下所示:

enter image description here

1 个答案:

答案 0 :(得分:2)

你需要两次使用相同的表并给它一个别名,如下所示:

SELECT e.name, m.name as manager_name
FROM test.employee e
join test.employee m on e.manager_id = m.id

如果员工中不存在经理,您可能希望使用left outer join代替