oracle SQL递归

转载:http://database.51cto.com/art/201009/227393.htm

oracle数据库中如果需要使用SQL递归语句,应该怎么写呢?下面就为您介绍一个oracle中使用SQL递归语句的例子,供您参考。

例子:

pid  id
  a   b   
  a   c     
  a   e   
  b   b1   
  b   b2   
  c   c1   
  e   e1   
  e   e3   
  d   d1   
    
指定pid=a,选出   
  a   b   
  a   c     
  a   e   
  b   b1   
  b   b2   
  c   c1   
  e   e1   
  e   e3  
SQL语句:select   parent,child   from   test   start   with   pid='a'   
connect   by   prior   id=pid 

Oracle  SQL递归查询语句:
1、表机构
SQL> desc comm_org_subjection
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ORG_SUBJECTION_ID                         NOT NULL VARCHAR2(32)    子键
 ORG_ID                                    NOT NULL VARCHAR2(32)
 FATHER_ORG_ID                             NOT NULL VARCHAR2(32)         父键
 LOCKED_IF                                 NOT NULL VARCHAR2(1)
 START_DATE                                NOT NULL DATE
 END_DATE                                           DATE
 EDITION_NAMEPLATE                                  NUMBER(8)
 CODE_AFFORD_IF                                     VARCHAR2(1)
 CODE_AFFORD_ORG_ID                        NOT NULL VARCHAR2(32)
 CODING_SHOW_ID                                     NUMBER(8)
 BSFLAG                                             VARCHAR2(1)
 MODIFI_DATE                                        DATE
 CREATOR_ID                                         VARCHAR2(32)
 CREATE_DATE                                        DATE
 CREATOR                                            VARCHAR2(35)

2、递归查找父结点 org_id为C6000000000001下的所有子结点:
select * from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.org_subjection_id=a.father_org_id

3、递归查找子结点 org_id为C6000000000001下的所有父结点:
select org_id from comm_org_subjection a
start with a.org_id='C6000000000001'
connect by prior a.father_org_id=a.org_subjection_id

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值