我有一张这样的表
NAME -- MANAGER
10 -- 85
85 -- 45
45 -- 52
52 -- null
我想要一个这样的输出,其中经理在层次结构中排在第一位,然后是员工
NAME -- MANAGER
52 -- null
45 -- 52
85 -- 45
10 -- 85
任何人都可以帮我做。我在下面做了内连接,但是没有用
select * from TABLEMAIN
inner join TABLEMAIN t2 ON TABLEMAIN.MANAGER = t2.NAME
order by TABLEMAIN.NAME
请帮我解决问题
答案 0 :(得分:2)
可以使用start with和
连接来实现WITH TABLEMAIN(NAME,MANAGER) AS
(SELECT 10 ,85 FROM dual UNION ALL
SELECT 85 , 45 FROM dual UNION ALL
SELECT 45 ,52 FROM dual UNION ALL
SELECT 52 ,null FROM dual )
----
-- End of data
----
SELECT * FROM TABLEMAIN
START WITH manager IS NULL
CONNECT BY PRIOR NAME = manager
输出:
NAME MANAGER
52
45 52
85 45
10 85