id | pid | 问题描述: |
|
1 | 0 | ||
2 | 0 | ||
3 | 1 | ||
4 | 1 | ||
5 | 2 | ||
6 | 2 | ||
7 | 3 | ||
8 | 4 | ||
9 | 5 | ||
取出id为1及其下属的所有的数据,结果为下 | |||
id | pid | ||
1 | 0 | ||
3 | 1 | ||
4 | 1 | ||
7 | 3 | ||
8 | 4 |
SQL> CREATE TABLE TBL_TEST
2 (
3 ID NUMBER,
4 NAME VARCHAR2(100 BYTE),
5 PID NUMBER DEFAULT 0
6 );
Table created
SQL> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');
1 row inserted
SQL> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');
1 row inserted
SQL> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');
1 row inserted
SQL> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');
1 row inserted
SQL> INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');
1 row inserted
SQL>
SQL> select * from TBL_TEST
2 start with id=1
3 connect by prior id = pid
4 /
ID NAME PID
---------- -------------------------------------------------------------------------------- ----------
1 10 0
2 11 1
5 121 2
4 12 1
SQL>
SQL> select * from TBL_TEST
2 start with id=5
3 connect by prior pid = id
4 /
ID NAME PID
---------- -------------------------------------------------------------------------------- ----------
5 121 2
2 11 1
1 10 0