oracle 中怎样递归查询出子节点的最上层父节点,并且其父节点是自身

oracle中怎样递归查询出子节点的最上层父节点,并且其父节点是自身我用startwith...connectbyprior查询不出来,因为到了最上层将会死循环,就会报O... oracle 中怎样递归查询出子节点的最上层父节点,并且其父节点是自身
我用start with...connect by prior查询不出来,因为到了最上层将会死循环,就会报ORA-01436: 用户数据中的 CONNECT BY 循环的错误,表如下:知道3 查1
子 父
1 1
2 1
3 2
展开
 我来答
freechan10
2019-11-14 · TA获得超过2.9万个赞
知道小有建树答主
回答量:263
采纳率:68%
帮助的人:12.8万
展开全部

1、创建测试表,create table test_connect(id number, p_id number);

2、插入测试数据,

insert into test_connect values(1,1);

insert into test_connect values(2,1);

insert into test_connect values(3,2);

insert into test_connect values(4,3);

commit;

3、查询数据表内容,select * from test_connect ,

4、执行递归查询语句,加入nocycle要素,不会出现【ORA-01436: 用户数据中的 CONNECT BY 循环的错误】,执行结果如下,

select *

  from test_connect t

 start with id = 4

connect by nocycle prior t.p_id = t.id

节子不哭
推荐于2018-02-27 · TA获得超过461个赞
知道小有建树答主
回答量:340
采纳率:85%
帮助的人:165万
展开全部

可以指定根节点,到根节点处停止递归

select sd.id,
       sd.parent_id,
       sd.name,
       connect_by_root(sd.id) city_id, -- 递归查询到根节点的ID
       connect_by_root(sd.name)city_name -- 递归查询到根节点的name
 from sc_district sd
where sd.name = '响滩镇' -- 定位到树的叶子节点
start with parent_id = 1 -- 从下到上遍历到根节点,只到parent_id =1 才结束遍历(可以想象成遍历到树根,第一级别节点)
connect by prior id= sd.parent_id -- 自下而上,下一行的id等于这一行的parent_id
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2018-11-30
展开全部
select id from ( select id ,PARENTLOGID from 表一 connect by nocycle prior PARENTLOGID=id START WITH id='3' ) where PARENTLOGID is null
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
能辉0Jn
2017-07-01 · TA获得超过395个赞
知道小有建树答主
回答量:595
采纳率:57%
帮助的人:75.4万
展开全部
treeview.selectednode.parentnode貌似有这个属性,你找找parent
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
康熙转世
2016-05-25 · TA获得超过6839个赞
知道大有可为答主
回答量:4325
采纳率:85%
帮助的人:2944万
展开全部
楼主您好
可以试试connect by prior替换成connect by nocycle prior
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式