选择列作为具有条件的不同列名称

时间:2013-10-12 05:38:26

标签: mysql select multiple-tables

我有如下表结构,

employees_info:

id | name | role   | managerid | 
1  | john | BO     | 2         |
2  | jack | Manager| 3         |

现在我需要选择约翰的详细信息,我需要他idnamerolemanagername(不是经理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作为一个不同的表,我可以使用内部联接来使其工作,但是,我只是想尝试一次像上面的方法,我无法让它工作。如果它是正确的方法,请帮助我解决这个问题。或者你甚至可以给我一个更好的方法。

1 个答案:

答案 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'