用SQL实现深度优先搜索和广度优先搜索
语法举列子:
WITH T AS (
SELECT 'B' A , 'A' B , 2 N FROM DUAL UNION ALL
SELECT 'C' A , 'A' B , 4 N FROM DUAL UNION ALL
SELECT 'D' A , 'B' B , 3 N FROM DUAL UNION ALL
SELECT 'E' A , 'B' B , 3 N FROM DUAL UNION ALL
SELECT 'F' A , 'B' B , 2 N FROM DUAL UNION ALL
SELECT 'G' A , 'C' B , 4 N FROM DUAL UNION ALL
SELECT 'H' A , 'C' B , 2 N FROM DUAL UNION ALL
SELECT 'I' A , 'H' B , 5 N FROM DUAL
)
, T1 (A,B,N,L) AS ( -------------------------指明列的信息,不然会报错 ORA-32488: WITH clause element did not have a column alias list
SELECT T.A,T.B,T.N,1 FROM T
WHERE T.B = 'A'
UNION ALL
SELECT T.A, T.B, T1.N*T.N ,L+1 --------------------------------相当于迭代
FROM T , T1
WHERE T1.A = T.B
)
SEARCH DEPTH FIRST BY B SET SEQ -----------------------类似rownum
SELECT *FRO