有一个表主要有两个字段id,parentid.它反映一个树状菜单.
id          parentid
1            0
2            1
3            1
4            3这是一个树结构
1
   2
   3
      4
怎样用一条语句,删除一棵树.比如删除3时,同时删除4.   同样删除1时全部都删除掉

解决方案 »

  1.   

    SQL> select * from test;        ID     PARENT
    ---------- ----------
             1          0
             2          1
             3          1
             4          3SQL> DELETE FROM test tt WHERE exists(select 1 from test t WHERE t.ID = tt.ID START WITH t.ID = 3 CONNECT BY PRIOR t.ID = t.PARENT);2 rows deletedSQL> select * from test;        ID     PARENT
    ---------- ----------
             1          0
             2          1SQL> rollback;Rollback completeSQL> select * from test;        ID     PARENT
    ---------- ----------
             1          0
             2          1
             3          1
             4          3SQL> DELETE FROM test tt WHERE exists(select 1 from test t WHERE t.ID = tt.ID START WITH t.ID = 4 CONNECT BY PRIOR t.ID = t.PARENT);1 row deletedSQL> select * from test;        ID     PARENT
    ---------- ----------
             1          0
             2          1
             3          1SQL> rollback;Rollback completeSQL> select * from test;        ID     PARENT
    ---------- ----------
             1          0
             2          1
             3          1
             4          3SQL> DELETE FROM test tt WHERE exists(select 1 from test t WHERE t.ID = tt.ID START WITH t.ID = 1 CONNECT BY PRIOR t.ID = t.PARENT);4 rows deletedSQL> select * from test;        ID     PARENT
    ---------- ----------SQL>