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