Khi bạn đang chạy Oracle 11g (và Nếu nó xảy ra là Bản phát hành 2), là một trong các phương pháp, bạn có thể sử dụng biểu thức bảng chung đệ quy (còn được gọi là bao gồm truy vấn phụ đệ quy) để nhận được kết quả mong muốn .
SQL> with rcte(r1, r2, lv, root) as(
2 select r1
3 , r2
4 , 0 lv
5 , r1
6 from rd
7 where r1 = 1
8
9 union all
10
11 select t.r1
12 , t.r2
13 , lv + 1
14 , q.root
15 from rd t
16 join rcte q
17 on (t.r1 = q.r2)
18 )
19 search depth first by r1 set s
20 cycle r1 set is_cycle to 'y' default 'n'
21
22 select root
23 , r2
24 from rcte
25 where is_cycle = 'n'
26 and r2 <> root
27 ;
ROOT R2
---------- ----------
1 2
1 3
1 4
1 5