高分~~~~~~~~请教这个需求怎么实现!
有一个表,如下
ID BBB PARNETID
1 1 |admin |0
2 20009 |20009 |1
3 20010 |20010 |1
4 20011 |20011 |1
5 20012 |20012 |20009
6 20013 |20013 |20009
7 20014 |20014 |20010
8 20015 |20015 |20012
9 20016 |20016 |20014
其中,PARENTID为父节点的ID。能否用一行sql查询,查询出所有的子节点和孙子节点,比如ID为1,则得到的结果是所有的9行记录,若ID为20009,则查询出的结果为2,5,6,8行记录。若用单纯的sql不行。则实现该功能的存储过程怎么写?
------解决方案--------------------select * from xxx
start with id=1
connect by prior bbb=parentid;
要不就是connect by prior parentid=bbb,记不太清了
------解决方案--------------------楼上说的是对的,递归实现
select * from test
start with id=1 //根接点
connect by prior id=PARNETID
prior 表示上条纪录
prior id=PARNETID 上条纪录的 id=本条的 PARNETID