ORACLE 递归查询

 在程序中很容易做到用递归的方法整理数据,但是在数据库中,用SQL语句怎么实现?下面我以最典型的树形结构来说明下如何在Oracle使用递归查询。
首先,创建一张表格:

create table TEST_COMPONENT
(
  COMPONENT_ID        VARCHAR2(255) not null,
  COMPONENT_CODE      VARCHAR2(255),
  PARENT_CODE         VARCHAR2(255),
  COMPONENT_NAME      VARCHAR2(255),
  ORDER_SQ            NUMBER(36)
)

  

COMPONENT_ID  主键  COMPONENT_CODE   编码  PARENT_CODE   父级编码  COMPONENT_NAME  节点名称

 ORDER_SQ 排序字段

 

一、基本使用:

    在Oracle中,递归查询要用到start   with 。。。。connect   by   prior。。。

    具体格式是:

SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主键=子外键

 

 本例来讲的话:

方法一(无需排序):

 

select a.* 
from test_component a 
start with a.parent_code = -1 
connect by prior a.component_code = a.parent_code

 方法二(需要排序):

Oracle9以后,提供了一种排序“order siblings by”就可以实现我们的需求,用法如下

select a.* 
from test_component a 
start with a.parent_code = -1 
connect by prior a.component_code = a.parent_code 
order siblings by a.order_sq asc

  

OKEY ,想要的结果就会完美的展现出来了,完工

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值