1. 程式人生 > >oracle的start with connect by prior如何使用

oracle的start with connect by prior如何使用

SQ font 過濾 圖片 acl http nec con IT

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條件進行過濾。

 

 

oracle的start with connect by prior如何使用