SQL:SEARCH DEPTH FIRST和 SEARCH BREADTH FIRST

用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
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值