Oracle 遞迴查詢

2021-10-01 21:38:53 字數 1201 閱讀 9330

在oracle中遇到了start with查詢語句,經過查詢資料了解現在總結一下.

參考文章:

首先我們可以新建乙個demo表做測試

create table demo ( id varchar2(10) primary key, dsc varchar2(100), pid varchar2(10) )

--插入幾條資料

insert into demo values ('00001', '中國', '-1');

insert into demo values ('00011', '陝西', '00001');

insert into demo values ('00012', '貴州', '00001');

insert into demo values ('00013', '河南', '00001');

insert into demo values ('00111', '西安', '00011'); i

nsert into demo values ('00112', '咸陽', '00011');

insert into demo values ('00113', '延安', '00011');

start with的基本語法如下

select ... from +

表名 where + 條件3

start with + 條件1

connect by prior + 條件2

條件1表示我資料的切入點,也就是我第一條資料從**開始.

條件2是連線條件,其中用prior表示上一條記錄,例如connect by prior id = pid,意思就是上一條記錄的id是本條記錄的pid

條件3表示條件12執行遍歷結果之後再進行條件約束.

首先 我們查詢所有表示這樣的,

select * from start_demo start with id = '00001' connect by prior id = pid

start with id = '00001' 表示切入點,也就是我的第一條資料

connect by prior id = pid 表示我的上一條資料的id是我當前資料的pid(如果不是就表明不是當前節點)

反之select * from start_demo start with id = '00113' connect by prior pid = id  ---上一條記錄的pid是本條記錄的id

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...