oracle的start with connect by prior如何使用


oracle的start with connect by prior是根據條件遞歸查詢"樹",分為四種使用情況: 

第一種:start with 子節點ID='...' connect by prior 子節點ID = 父節點ID
select * from mdm_organization o start with o.org_code='10000008' connect by prior o.org_code=o.org_parent_code

 按照條件org_code='10000008',對'10000008'(包括自己)及其子節點進行遞歸查詢,結果如下

   查詢結果自己所有的后代節點(包括自己)。

第二種:start with 子節點ID='...' connect by 子節點ID = prior 父節點ID
select * from mdm_organization o start with o.org_code='10000008' connect by o.org_code=prior o.org_parent_code

 按照條件org_code='10000008',對'10000008'(包括自己)及其父節點進行遞歸查詢,結果如下

 查詢結果自己所有的前代節點(包括自己)。

第三種:start with 父節點ID='...' connect by prior 子節點ID = 父節點ID
select * from mdm_organization o start with o.org_parent_code='10000008' connect by prior o.org_code=o.org_parent_code

 按照條件org_parent_code='10000008',對'10000008'(不包括自己)子節點進行遞歸查詢,結果如下

 

 查詢結果自己所有的后代節點(不包括自己)。

第四種:start with 父節點ID='...' connect by 子節點ID = prior 父節點ID
select * from mdm_organization o start with o.org_parent_code='10000008' connect by o.org_code = prior o.org_parent_code
按照條件org_parent_code='10000008',對'10000008'(包括自己)的第一代孩子們及其父節點進行遞歸查詢,結果如下

 查詢結果自己的第一代后節點和所有的前代節點(包括自己)。

 如果有where 條件,如下

 select * from mdm_organization o where 條件 start with o.org_parent_code='10000008' connect by o.org_code = prior o.org_parent_code

 執行順序為先執行start with connect by prior,然后再按照where條件進行過濾。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM