Oracle中的sql语言的递归查询


create table PREREQ
(
  COURSE_ID NVARCHAR2(20),
  PREREQ_ID NVARCHAR2(20)
)
;

insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('001', 'a-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('a-001', 'b-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('b-001', 'c-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('002', 'a-002');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('a-002', 'b-002');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('b-002', 'c-002');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('c-002', 'd-002');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('010', 'e-010');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('c-001', 'd-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('d-001', 'e-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('001', 'a1-001');
insert into PREREQ (COURSE_ID, PREREQ_ID)
values ('d-001', 'e2-001');
commit;

select * from prereq t
start with t.course_id = '001'
connect by prior t.prereq_id = t.course_id

参考 : http://laoli5290.iteye.com/blog/1563289

猜你喜欢

转载自2018scala.iteye.com/blog/2236451