Oracle數(shù)據(jù)庫(kù)之樹(shù)形查詢的代碼示例
Oracle數(shù)據(jù)庫(kù)的樹(shù)形查詢是本文我們主要要介紹的內(nèi)容,包括樹(shù)形查詢的基本語(yǔ)法、構(gòu)造環(huán)境、根節(jié)點(diǎn)遍歷子節(jié)點(diǎn)以及子節(jié)點(diǎn)向根節(jié)點(diǎn)追溯,接下來(lái)就讓我們一起來(lái)了解一下這部分內(nèi)容吧。
基本語(yǔ)法:
- select...from tabename start with cond1 connect by prior cond2 where cond2
注意:
cond1是根節(jié)點(diǎn)的限定語(yǔ)句。
cond2是連接條件,其中prior表示上一條記錄,指該記錄的父親是上一條記錄。
cond3是過(guò)濾條件。
構(gòu)造環(huán)境:
- create table Family(
- id integer,
- parentid integer,
- name varchar2(50)
- )
- insert into family values(0,0,'a')
- insert into family values(1,0,'b')
- insert into family values(2,1,'c')
- insert into family values(3,1,'d')
- insert into family values(4,1,'e')
- insert into family values(5,1,'f')
通過(guò)根節(jié)點(diǎn)遍歷子節(jié)點(diǎn)
例如:查詢父親等于1的所有子的信息
- select * from family start with parentid=1 connect by prior id=parentid
通過(guò)子節(jié)點(diǎn)向根節(jié)點(diǎn)追溯
例如:
- select * from family start with id=5 connect by prior parentid=id
注:如果報(bào)ORA-01436:用戶數(shù)據(jù)庫(kù)中的coonect by循環(huán),則將第一條數(shù)據(jù)中的parentid改為null,否則loop循環(huán)找parentid就找不到了!
擴(kuò)展:通過(guò)level 關(guān)鍵字查詢所在層次
select t.*,level from family t start with parentid=1 connect by prior id=parentid
注意:表必須用別名。
關(guān)于Oracle數(shù)據(jù)庫(kù)的樹(shù)形查詢的知識(shí)就介紹到這里了,如果您想了解更多Oracle數(shù)據(jù)庫(kù)的知識(shí),可以看一下這里的文章:http://database.51cto.com/oracle/,相信一定可以帶給您收獲的!
【編輯推薦】






