首页 > 数据库 > Oracle中的递归查询

Oracle中的递归查询

2009年3月20日 亲亲宝宝 发表评论 阅读评论

该表只有两个字段,PNODE,NODE,PNODE为NODE父结点,当该节点无子节点时,PNODE=NODE
要求给定父结点,查出所有子节点,子孙节点……
如:
PNODE NODE
1 2
2 3
2 4
3 3
4 4
要求给定PNODE=1,给出结果为:
2
3
4

如果是10G以上的可以用NOCYCLE 去掉循环的影响
….
start with PNODE = 1
connect by NOCYCLE prior NODE = PNODE
….
10G以下的可以试试:Where一定要写在connect by前面
where NODE <> PNODE
start with PNODE = 1
connect by prior NODE = PNODE

另外一种查询ID的所有父节点:
select * from dg_test
start with D_id=7
connect by D_id = prior D_pid
把Prior写到后面就可以了。

分类: 数据库 标签: 2,657 次阅读
原文链接:http://www.wenhq.com/article/view_275.html
欢迎转载,请注明出处:亲亲宝宝
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.