Oracle中start with connect by的递归查询

语法:

select … from tablename
start with 条件1
connect by 条件2
where 条件3;

 

通过这个语句,能查询出树状结构的数据

  • 条件1 是起始条件,限定树结构的起始节点
  • 条件2 是连接条件,设置递归的条件
  • 条件3 是过滤条件,对所有返回的数据进行过滤


行政区划表 xzqh

1、查南京市及以下的地区

select DM, MC, LS from xzqh
start with DM = '320100'
connect by prior DM = LS;

 

2、查江宁区及父级的地区

select DM, MC, LS from xzqh
start with DM = '320115'
connect by prior LS = DM;

 

补充说明:

  • start with 后的是限定条件,如果这个条件可以查出多个值,会把这些值作为多棵树的根节点,递归查询出多棵数状结构;start with 被省略,表示所有满足查询条件的行作为根节点
  • prior 表示上一条记录,connect by prior DM = LS,意思上一条数据的 DM 字段值是下一条数据的 LS 值,南京市的 DM 是各区的 LS,所以例1 查南京市及以下的地区
  • 根据 connect by prior 条件查询不到数据,递归结束
  • connect by 后面可以包含多个 prior 条件
  • prior 在条件2 中的顺序,影响查询方式。prior 在等号前(connect by prior DM = LS),从根节点向叶节点检索;prior 在等号后(connect by DM = prior LS),从叶节点向根节点检索
  • where 后面的条件3,可以对树状结构数据进行裁剪,即过滤出自己想要的数据
  • 可以增加 order by 排序

 

 


【Java面试题与答案】整理推荐

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值