oracle的start with connect by prior的用法

oracle的start with connect by prior是根据条件递归查询“树”,分为四种使用情况: 

第一种:start with 子节点ID='...' connect by prior 子节点ID = 父节点ID

f9dcd100baa1cd11063455cda913e7f7c2ce2d6c@f_auto?token=943f4b7420733389d91678c3c04331f4&f=jpeg

按照条件org_code='10000008',对'10000008'(包括自己)及其子节点进行递归查询,结果如下

b219ebc4b74543a96d3c02f10d16a589b90114f0@f_auto?token=cab0ddd66a34a190a28444b2f2cd62a0&f=jpeg

查询结果自己所有的后代节点(包括自己)。
第二种:start with 子节点ID='...' connect by 子节点ID = prior 父节点ID

80cb39dbb6fd52664dc5f62dba19b820d407362d@f_auto?token=57d3a77d777523e3f78728294992914a&f=jpeg

按照条件org_code='10000008',对'10000008'(包括自己)及其父节点进行递归查询,结果如下

0d338744ebf81a4c27034860c12b4f52252da676@f_auto?token=7c8bcfeec7da775c6e76313566bee305&f=jpeg

查询结果自己所有的前代节点(包括自己)。
第三种:start with 父节点ID='...' connect by prior 子节点ID = 父节点ID

80cb39dbb6fd5266c5d98e6bba19b820d50736ee@f_auto?token=cf71915c79d44468f2307078f1e84871&f=jpeg

按照条件org_parent_code='10000008',对'10000008'(不包括自己)子节点进行递归查询,结果如下

0b46f21fbe096b63d1bcb56c1e32a84febf8ac75@f_auto?token=edf483b857fe649975cf36bd79675be5&f=jpeg

查询结果自己所有的后代节点(不包括自己)。
第四种:start with 父节点ID='...' connect by 子节点ID = prior 父节点ID

810a19d8bc3eb135f55c2070b11f87d8fc1f446a@f_auto?token=ead99b081502db20f953c8d845ac1fda&f=jpeg

按照条件org_parent_code='10000008',对'10000008'(包括自己)的第一代孩子们及其父节点进行递归查询,结果如下

37d12f2eb9389b501dc33e769d34cad6e7116ee6@f_auto?token=5c8d7a4ef97c9183999af8b5dc794fa6&f=jpeg

查询结果自己的第一代后节点和所有的前代节点(包括自己)。

如果有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条件进行过滤。

caef76094b36acaf9c8127926dd8a21b01e99c03@f_auto?token=12e0d1011c932cc3d8a42ad982117ec8&f=jpeg

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值