create table TEST
(
NAME VARCHAR2(100),
PARENTID INTEGER,
ID INTEGER,
SORT INTEGER
);
insert into test (NAME, PARENTID, ID, SORT)
values ('A', 0, 1, 1);
insert into test (NAME, PARENTID, ID, SORT)
values ('AA', 1, 4, 1);
insert into test (NAME, PARENTID, ID, SORT)
values ('AAA', 4, 8, 1);
insert into test (NAME, PARENTID, ID, SORT)
values ('AAC', 4, 10, 3);
insert into test (NAME, PARENTID, ID, SORT)
values ('AAB', 4, 9, 4);
insert into test (NAME, PARENTID, ID, SORT)
values ('C', 0, 3, 2);
insert into test (NAME, PARENTID, ID, SORT)
values ('CC', 3, 5, 2);
insert into test (NAME, PARENTID, ID, SORT)
values ('B', 0, 2, 3);
insert into test (NAME, PARENTID, ID, SORT)
values ('BB', 2, 6, 3);
insert into test (NAME, PARENTID, ID, SORT)
values ('BBB', 6, 7, 2);
select * from test d start with d.parentid=-1 connect by prior d.id=d.parentid ORDER SIBLINGS BY d.sort;
--start with 从那个父节点开始
--connect by prior 子与父关联 ,注意:一定要子在前面等于父在后面(d.id=d.parentid)
--ORDER SIBLINGS BY 还需要按照那个字段排序
|