我正试图用我有限的SQL知识来解决这个问题。
我有一个表,上面有几行员工。每位员工向MGRID汇报工作。数据可以达到7-8个级别,员工向经理汇报,经理向sr汇报。高级经理。经理到主管,等等。
我的表看起来像这样:
EMPID NAME MGRID
1 Alex 8
2 Jane 9
3 Bob 10
4 Shack 11
5 Chris 8
6 Sarah 10
7 James 8
8 Michelle 11
9 Ana 11
10 Steve 11
11 Ron NULL. <= CEO
12 Mike 3
13 Jenn 3 我的最终目标是输出如下所示的内容(多层次)
Ron
Shack
Steve
Bob
Mike
Jenn
Sarah
Ana
Jane
Michelle
James
Chris
Alex
Chris当前在mysql开发环境5.6版,本地环境8.0版。
谢谢。
发布于 2018-04-25 03:33:07
经过大量的搜索,我找到了一个解决方案,它可以生成我正在寻找的结果(或者至少非常接近我需要的结果)。我将这个答案发布给其他可能正在寻找的人。
WITH RECURSIVE descendants AS
(
SELECT EMPID, NAME, MGRID, 1 as level
FROM `EMPTABLE`
WHERE MGRID = NULL
UNION ALL
SELECT t.EMPID, t.NAME, t.MGRID, d.level+1
FROM descendants d, `EMPTABLE` t
WHERE t.MGRID = d.EMPID
)
SELECT * FROM descendants ORDER BY level;https://stackoverflow.com/questions/49984078
复制相似问题