Oracle中遞迴查詢

2021-09-25 22:31:51 字數 994 閱讀 1050

表結構示例:

示例資料:

oracle當中的「connect by」是層次查詢子句,一般用於樹狀或者層次結果集的查詢。例如家族關係、組織管理等層次關係。

每行資料都是按層次順序檢索,並規定將表中的資料連入樹形結構的關係中。

select a.*,level,connect_by_isleaf from node_tree a start with id in (select id from node_tree where parent_id is null) 

connect by prior  id = parent_id

示例結果集:

其中 level 代表第幾層;connect_by_isleaf 代表是否是子集。

start with ...connect by 的用法, start with 後面所跟的就是就是遞迴的種子。

遞迴的種子也就是遞迴開始的地方 connect by 後面的"prior" 如果預設:則只能查詢到符合條件的起始行,並不進行遞迴查詢;

connect by prior 後面所放的字段是有關係的,它指明了查詢的方向。

根據子節點反向遞迴:

select a.*,level,connect_by_isleaf from node_tree a start with id = 6

connect by prior   parent_id = 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中的遞迴查詢

我們假設有如下一張機構表 org 字段型別 欄位名稱 字段描述 number 16 id 機構id number 16 parent id 父機構id varchar2 100 name 機構名稱 number 1 enable 是否啟用,1表示啟用,0表示停用 表中有如下幾行資料 id paren...

oracle中的遞迴查詢

oracle遞迴查詢 oracle中start by prior子句用法 connect by 是結構化查詢中用到的,其基本語法是 select from tablename start with 條件1 connect by 條件2 where 條件3 例 select from table st...