Oracle遞迴查詢樹結構

來源:互聯網
上載者:User

標籤:結束   with   values   樹結構   資料庫   inner   tar   from   工作   

之前在工作中碰到一個問題,需要找樹結構下的所有子節點,如果用程式寫會反覆查詢資料庫,對效能有影響,在網上找了下,可以用Oracle的遞迴查詢,例子如下:

create table test1 (cid int,cpid int)insert into test1 (cid,cpid) values(1,0);insert into test1 (cid,cpid) values(2,1);insert into test1 (cid,cpid) values(3,1);insert into test1 (cid,cpid) values(4,2);insert into test1 (cid,cpid) values(5,3);insert into test1 (cid,cpid) values(6,3);select * from test1--找根的所有子select * from test1 start with cpid = 0Connect by prior cid = cpid--找 子所在的根節點select * from test1 start with cid = 3Connect by prior cpid = cidselect * from(select * from test1 start with cid = 3Connect by prior cpid = cid) where cid <> 3

另外,SQLServer查詢樹結構下的所有子節點可以用如下語句:

 WITH cteTree        AS (SELECT *              FROM test1               WHERE CId = @TreeId  --第一個查詢作為遞迴的基點(錨點)            UNION ALL            SELECT test1.*     --第二個查詢作為遞迴成員, 下屬成員的結果為空白時,此遞迴結束。              FROM                   cteTree INNER JOIN test1  ON cteTree.CId = test1 .PId)         SELECT *          FROM cteTree 

太晚了,明天再完善SQLServer的

 

Oracle遞迴查詢樹結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.