首页 > 解决方案 > 如何将表引用到自身以带回员工记录和提供 empId 的经理

问题描述

我不知道如何为此编写查询。我在考虑一个表联合或左表连接,但我什至不知道如何开始

员工表

容纳员工和经理

.

empId mgrId name   
--------------------not in table 1   0   TheBoss (deleted)
22    1     John   
22    1     John   
22    1     John   
22    1     John   
22    1     John   
45    1     Steve  
45    1     Steve  
68    1     Rudy   
56    22    Lucy
77    22    Mack
78    45    Carlos
79    45    Juan
80    22    James
81    --    Bob    (Bob is staff, but has not been assigned a Manager
82    22    Mike
83    22    Jack
68    1     Rudy   (Rudy is a Manager but no one reports to him)

如果经理 John(22) 被选中

如果经理史蒂夫(45)被选中

如果员工 Lucy(56) 被选中

如果鲁迪经理(68 岁)被选中

如果员工 Bob(81) 被选中

标签: mysqldatabase

解决方案


SELECT DISTINCT empId, mgrId, name
FROM table
WHERE @needed_id IN (empId, mgrId)

或者

SELECT DISTINCT t1.empId, t1.mgrId, t1.name
FROM table t1
JOIN table t2 ON t2.empId IN (t1.empId, t1.mgrId)
WHERE t2.name = @needed_name

PS。如果存在相同name但不同的行,empId则第二个查询不适用。


推荐阅读