mysql - 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
解决方案
您可以尝试以下 - 使用递归 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
推荐阅读
- javascript - TypeError:无法使用 Ionic 2 读取 HTML5 Canvas 中未定义的属性“nativeElement”
- vba - Microsoft Excel:多次重复特定操作的宏
- xml - 为每个解析xml文件
- gitlab-ci - 推送构建的图像时,Gitlab-runner 有“访问被拒绝”
- swift - 搜索控制器 .dimsBackgroundDuringPresentation 也会使状态栏变暗?
- haskell - Haskell - 输入解析错误
- ios - URL 未在 webview 上加载
- vue.js - 使用“createElement”函数时如何使道具绑定反应
- java - ElasticSearch Java RestClient - 等待 f 或 [30000] 毫秒后的侦听器超时
- regex - python:解包列表和集合