我有如下表结构,
employees_info:
id | name | role | managerid |
1 | john | BO | 2 |
2 | jack | Manager| 3 |
现在我需要选择约翰的详细信息,我需要他id
,name
,role
和managername
(不是经理ID)。根据上表,我需要为同一个表编写一个查询,而管理器也在同一个表中。
我想过使用下面的联盟,
select * from employees_info e
union (select emp_name as manager_name
from employees_info
where e.managerid = managerid);
但我得到了
unknown column e.managerid in where clause
我可以创建role
作为一个不同的表,我可以使用内部联接来使其工作,但是,我只是想尝试一次像上面的方法,我无法让它工作。如果它是正确的方法,请帮助我解决这个问题。或者你甚至可以给我一个更好的方法。
答案 0 :(得分:1)
SQLFiddle示例here
select E.id emp_id, E.name emap_name, E.role emp_role, M.name manager_name from employees_info E inner join employees_info M on E.managerid = M.id where E.name='john'