欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

oracle SQL递归的使用详解

程序员文章站 2023-11-30 10:57:52
oracle数据库中如果需要使用sql递归语句,应该怎么写呢?下面就为您介绍一个oracle中使用sql递归语句的例子,供您参考。例子:复制代码 代码如下:pid ...
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