oracle level connect by 在postgresql中的写法

今天工作被一个递归嵌套卡住了,废话不多说,代码如下:

select t.*
		from (
		    select cporg.code as lid,
			cporg.name as level_name,
			cporg.SRD_CODE as parent_id,
			cporg.type_flag as type_flag
			from (
				with recursive cte as(
					select x.* from gf_sys_organization x
					where x.code = '10520301'
					union all
					select y.* from gf_sys_organization y
					inner join cte c on c.code = y.srd_code
					and y.catagory = '1'
				)select code,name,SRD_CODE,1 as type_flag, 'cadre1' icon_cls from cte
       union all
				select cp.id, cp.level_name, cp.ORG_CODE, -1 as type_flag, 'cadre2' icon_cls
        from GF_cadre_position cp
			) cporg
			start with cporg.code = '10520301'
			connect by prior cporg.code = cporg.SRD_CODE
		) t order by t.level_falg, t.type_flag asc

可以清楚地看到是先递归了一次查出结果集,然后再在这个结果集中再递归查询,进行层次标记。

按照正常的思路应该有如下代码:


                
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值