oralce資料庫遞迴查詢的用法

2021-09-30 01:31:53 字數 1327 閱讀 7486

首先我們可以新建乙個start_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

(心得)此遞迴方法適用於查詢多級選單,以及省市地區的查詢

oralce資料庫中資料的查詢

資料讀取 首先資料塊讀入到buffer cache中,並將其放在lru last recently used 鍊錶的mru most recently used 端,當需要再次訪問該塊時可以直接從buffer cache中讀取,如果有新的資料需要被讀入buffer cache中,而buffer ca...

資料庫遞迴查詢

今天工作看同事 用到了start with.connect by prior,不知道什麼意思,查詢了一些資料,以下是比較好理解的。oracle中的select語句可以用start with.connect by prior子句實現遞迴查詢,connect by 是結構化查詢中用到的,其基本語法是 s...

oralce資料庫索引

例如有如下表 test tbid name rowid 1zhangsan 0 1 2limei 1 2 3haungqing 0 3 如果在該表中不存在任何索引,那麼在查詢某一條記錄,例如姓名為limei的人,因為查詢到乙個後下面不確定是否還存在姓名為limei的人,因此會進行全表掃瞄查詢。而如果...