Oracle數(shù)據(jù)庫之樹形查詢的代碼示例
作者:木子朱
本文我們主要介紹了Oracle數(shù)據(jù)庫樹形查詢的知識,包括:根節(jié)點遍歷子節(jié)點以及子節(jié)點向根節(jié)點追溯,并給出了詳細的代碼示例,希望能夠?qū)δ兴鶐椭?/div>
Oracle數(shù)據(jù)庫的樹形查詢是本文我們主要要介紹的內(nèi)容,包括樹形查詢的基本語法、構(gòu)造環(huán)境、根節(jié)點遍歷子節(jié)點以及子節(jié)點向根節(jié)點追溯,接下來就讓我們一起來了解一下這部分內(nèi)容吧。
基本語法:
- select...from tabename start with cond1 connect by prior cond2 where cond2
注意:
cond1是根節(jié)點的限定語句。
cond2是連接條件,其中prior表示上一條記錄,指該記錄的父親是上一條記錄。
cond3是過濾條件。
構(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')
通過根節(jié)點遍歷子節(jié)點
例如:查詢父親等于1的所有子的信息
- select * from family start with parentid=1 connect by prior id=parentid
通過子節(jié)點向根節(jié)點追溯
例如:
- select * from family start with id=5 connect by prior parentid=id
注:如果報ORA-01436:用戶數(shù)據(jù)庫中的coonect by循環(huán),則將第一條數(shù)據(jù)中的parentid改為null,否則loop循環(huán)找parentid就找不到了!
擴展:通過level 關(guān)鍵字查詢所在層次
select t.*,level from family t start with parentid=1 connect by prior id=parentid
注意:表必須用別名。
關(guān)于Oracle數(shù)據(jù)庫的樹形查詢的知識就介紹到這里了,如果您想了解更多Oracle數(shù)據(jù)庫的知識,可以看一下這里的文章:http://database.51cto.com/oracle/,相信一定可以帶給您收獲的!
【編輯推薦】
責任編輯:趙鵬
來源:
博客園


相關(guān)推薦




