oracle递归查询用法比如ITeye - AG环亚娱乐

oracle递归查询用法比如ITeye

2019-01-12 12:54:10 | 作者: 鸿哲 | 标签: 结点,递归,查询 | 浏览: 1366

导言:
  有老朋友找我探问oracle递归查询用法,压根没听说过。了解了一下,留个简略比如,便利将来温习。

正文:
1)概念。

  直接度娘“oracle递归查询”,翻到“select * from table_ start with id = 0 connect by  prior pid = id”,看看就理解了。

2)比如。

  笔者在试验这个问题的时分,不巧测验数据库的机子被外星人占据了,说14:00还咱们。。。所以来个很歪的写法。也算多个亮点吧。

  直接上代码
select t_.a, t_.b, t_.c
 from (
 select 1 as a, 8978 as b, 0 as c from dual
 union select 2, 777, 1 from dual
 union select 3, 666, 2 from dual
 union select 4, 78945, 2 from dual
 union select 5, 1234, 1 from dual
 union select 6, 4678, 1 from dual
 ) t_
-- t_.a = ? 经过修正?的值来取,一切a=?的子结点,以及子结点的子结点。
 start with t_.a = 2
connect by prior t_.a = t_.c;
/* output
1 2 777 1
2 3 666 2
3 4 78945 2

  最终一行也可写为
-- 把=两头的对调过来。表明取a=?为子结点的根结点,以及根结点的根结点。
connect by prior t_.c = t_.a;
/* output
1 2 777 1
2 1 8978 0


引证:


版权声明
本文来源于网络,版权归原作者所有,其内容与观点不代表AG环亚娱乐立场。转载文章仅为传播更有价值的信息,如采编人员采编有误或者版权原因,请与我们联系,我们核实后立即修改或删除。

猜您喜欢的文章