首页 > 解决方案 > mysql join没有返回所需的结果

问题描述

我的数据如下所示,

employeeId  ManagerId
 3            2
 4            2
 2            1
 5            1
 6            3

一名员工有一名经理,而该经理将/可能拥有一名经理。我想做的是让员工的经理和该经理的经理(如果有空的话)。

例如,对于员工 6,结果将为 3 和 2。对于员工 2,结果将为 1。

这里的关键要求是,如果可用,查询应该返回至少一个经理,最多两个级别,不能更高。为员工 6 提供的示例说明了这一点。

现在我的查询看起来像,

 select a.managerId firstManager,b.ManagerId secondManager
 from (
 select managerId from Results where employeeId = 6  ) a 
  join 
 (select managerId from Results where employeeId in (select managerId from  Results where employeeId = 6 ) )b ;

我的查询适用于员工 6,但不适用于员工2。dbfiddle

标签: mysqlsql

解决方案


您可以尝试以下 - 使用递归 cte:DEMO

with RECURSIVE t as
(
select employeeid,managerid from Results where employeeid=6 
union all
SELECT e.employeeid,e.managerid from Results e inner join t t1 on e.employeeid = t1.managerid
) 
select * from t order by managerid desc limit 2

推荐阅读