我是SQL的新手,我刚开始学习SQL。我有一个包含3列的Employee表:
当manager_id与id相同时表示员工将有另一名员工作为经理。
例如:
员工" AAA"将有" BBB"作为他的经理,如果员工记录有员工的身份" BBB"作为manager_id。
我怎么能写一个单独的SQL查询,它会给我"员工姓名"及其相应的" Manager_name"。
以下是表格,到目前为止尝试的查询以及预期结果的详细信息。
员工表:
select * from test.employee;
查询1:
SELECT name as manager_name FROM test.employee
where manager_id IN(select id from test.employee)
group by manager_id;
查询2:
SELECT name as emp_name FROM test.employee
如何实现查询1和查询2的组合结果,如下所示:
答案 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
代替