首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql联接不返回所需的结果

mysql联接不返回所需的结果
EN

Stack Overflow用户
提问于 2020-09-27 06:29:46
回答 2查看 51关注 0票数 0

我的数据如下所示

代码语言:javascript
复制
employeeId  ManagerId
 3            2
 4            2
 2            1
 5            1
 6            3

一个雇员有一个经理,那个经理会/可以有一个经理。我想做的是让员工的经理和经理的经理,如果它是可用的。

例如,对于雇员6,结果是3& 2,而对于雇员2,结果是1。

这里的关键要求是,如果可用的话,查询应该返回最少一个管理器,并且最大返回两个级别,而不是更高。为员工6提供的示例说明了这一点。

现在我的查询看起来,

代码语言:javascript
复制
 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. [医]小提琴

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-27 06:49:25

您可以使用递归cte进行以下操作:演示

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2020-09-27 06:41:25

你可以做一个自我连接,你会得到你所需要的结果。dbfiddle

代码语言:javascript
复制
Select a.employeeId,
       a.ManagerId First_Manager, 
       b.ManagerId Second_Manager 
from Results a
left join Results b
on a.ManagerId = b.employeeId

输出:

代码语言:javascript
复制
EmployeeId  First_Manager   Second_Manager
3   2   1
4   2   1
2   1   null
5   1   nul
6   3   2
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64085530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档