Oracle 遞迴查詢

2022-02-14 10:26:43 字數 1492 閱讀 5345

工作遇到,總結一下!

一:表結構、資料

插入資料:

insert into org values(1,'總部',null);

insert into org values(2,'分部',1);

insert into org values(3,'安徽分部',2);

insert into org values(4,'江蘇分部',2);

insert into org values(5,'合肥分部',3);

insert into org values(6,'南京分部',4);

二.查詢分部及其下面所有的部門:

兩種寫法均可 :

select* from org start with name = '分部' connect by prior id = parent_id;

select* from org start with name = '分部' connect by parent_id = prior id ;

注意:prior後面緊跟的引數是id,意味查詢name='分部'的部門的id作為後面遞迴查詢的條件,即後面的部門的parent_id要等於查詢出來的id。

三.查詢合肥分部及其上面所有的部門:

兩種寫法均可 :

select* from org start with name = '合肥分部' connect by id = prior parent_id;

select* from org start with name = '合肥分部' connect by prior parent_id = id ;

注意:prior後面緊跟的引數是parent_id,意味查詢name='合肥分部'的部門的parent_id作為後面遞迴查詢的條件,即後面的部門的id要等於查詢出來的parent_id。 

記住一點:prior後面跟的是哪個字段,那麼這個欄位就作為後面遞迴查詢的條件

四.死迴圈的解決辦法

insert into org values(7,'a',9);

insert into org values(8,'b',7);

insert into org values(9,'c',8);

當出現死迴圈時,使用上述查詢語句會報錯:

可以使用關鍵字nocycle

oracle 遞迴查詢 Oracle遞迴查詢

1.1 建立表與插入資料 create table district id number 10 not null,parent id number 10 name varchar2 255 byte not null alter table district add constraint distr...

oracle 逆向遞迴查詢 oracle遞迴查詢

oracle的遞迴查詢 最近在看公司的oa系統,oa系統中基本都會有節點樹,其中對於樹上的資料展示,就是用了資料庫的遞迴查詢,在這裡總結下遞迴查詢。現在存在如下的一棵樹 不會畫樹,將就一下,該樹對應下面建立的表資料。建立如下表 create table dg id number not null,主...

oracle 逆向遞迴查詢 Oracle遞迴查詢

start with.connect by子句遞迴查詢一般用於乙個表維護樹形結構的應用。建立示例表 create table tbl test id number,name varchar2 100 byte pid number default 0 插入測試資料 insert into tbl t...