oracle遞迴查詢

2021-08-30 01:37:42 字數 1733 閱讀 5737

昨天乙個哥們遇到了乙個問題,問題的大意估計大家都應該遇到過了;大致如下:有一張表,包含各個郵政局的上下級別關係;

如,廣州郵政的上級是廣東郵政,廣東的郵政的上級是中國郵政,而廣州郵政的下級有天河郵政,越秀郵政 等,需求就是隨便輸入乙個地方郵政的名字,輸出他的所有上級或者下級(如如果輸入的是廣州郵政,要求他的上級的話,那麼廣東郵政,廣東的郵政的上級也一併輸出) 上網查了一下用oracle的遞迴查詢可以解決 大致如下:

create table test_post(

name varchar2(50) primary key,

parename varchar2(50)

);insert into test_post(name,parename)values('中國郵政','最高了');

insert into test_post(name,parename)values('廣東郵政','中國郵政');

insert into test_post(name,parename)values('廣州郵政','廣東郵政');

insert into test_post(name,parename)values('深圳郵政','廣東郵政');

insert into test_post(name,parename)values('東莞郵政','廣東郵政');

insert into test_post(name,parename)values('天河郵政','廣州郵政');

insert into test_post(name,parename)values('白雲郵政','廣州郵政');

insert into test_post(name,parename)values('越秀郵政','廣州郵政');

insert into test_post(name,parename)values('上社郵政','天河郵政');

insert into test_post(name,parename)values('棠下郵政','天河郵政');

insert into test_post(name,parename)values('東埔郵政','天河郵政');

insert into test_post(name,parename)values('人民北郵政','越秀郵政');

insert into test_post(name,parename)values('解放南郵政','越秀郵政');

insert into test_post(name,parename)values('流花路郵政','越秀郵政');

insert into test_post(name,parename)values('三元里郵政','白雲郵政');

insert into test_post(name,parename)values('機場路郵政','白雲郵政');

insert into test_post(name,parename)values('新市墟郵政','白雲郵政');

執行

select   t.name   from   test_post   t   start   with   t.name='廣州郵政'  

connect   by     prior parename=   name

就可以了

connect by 語法請參考一文

比如 connect by prior org_id = parent_id就是說上一條記錄的org_id 是本條記錄的parent_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...