轉:Oracle Connect By用法

來源:互聯網
上載者:User

http://shqkm.blog.163.com/blog/static/794804172010323102545265/

Oracle Connect By用法

oracle中的select語句可以用START WITH...CONNECT BY PRIOR子句實現遞迴查詢,connect by 是結構化查詢中用到的,其基本文法是:

select ... from <TableName> 
where <Conditional-1>
start with <Conditional-2>
connect by <Conditional-3>
;

<Conditional-1>:過濾條件,用於對返回的所有記錄進行過濾。
<Conditional-2>:查詢結果重起始根結點的限定條件。
<Conditional-3>:串連條件

資料群組織結構如:

 

資料庫表結構如下:

create table t2(root_id number,id number,name varchar(5),description varchar(10));insert into t2(root_id,id,name,description) values(0,1,'a','aaa');insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');insert into t2(root_id,id,name,description) values(0,4,'b','bbb');insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');--向上搜尋樹select * from T2     start with id=3    connect by prior root_id = idorder by root_id--向下搜尋樹select * from T2     start with id=3    connect by prior id = root_idorder by root_id

  

擷取完整樹:
select * from t2 start with root_id = 0 connect by prior id = root_id;
 

擷取特定子樹:
select * from t2 start with id = 1 connect by prior id = root_id;

 
select * from t2 start with id = 4 connect by prior id = root_id;

 

如果connect by prior中的prior被省略,則查詢將不進行深層遞迴。
如:

select * from t2 start with root_id = 0 connect by id = root_id;

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.