删除指定父节点的所有子节点

删除3节点及其以下的所有子节点

[@more@]

今天一个网友问到,如何删除一个父节点下面的所有子节点。

LOVE2008>select * from test;

C_ID P_ID
---------- ----------
1 0
2 1
3 1
4 2
5 2
6 3
9 6
10 9

8 rows selected.

--删除3节点及其以下的所有子节点
LOVE2008>delete from test where c_id in(
2 select c_id from test connect by prior c_id=p_id start with p_id=3
3 union
4 select 3 from dual
5 );

4 rows deleted.

LOVE2008>select * from test;

C_ID P_ID
---------- ----------
1 0
2 1
4 2
5 2

请使用浏览器的分享功能分享到微信等