Oracle中的递归查询语法(start with...connect by prior)

          首先声明,本人不是什么Oracle数据库大牛,只是把平时做项目时碰到的一些比较容易混淆的数据库知识拿出来整理一下,顺便和大家分享,我相信肯定有童鞋也会碰到这些问题。
          说到Oracle中的递归查询语法,我觉得有一些数据库基础的童鞋应该都知道,做项目的时候应该也会用到,比如在页面上展示一个机构树或目录树,就需要用的这个递归查询,数据表中一般也是用三个字段即可表示,id,name和pid,但是 如果我问你递归语句中的prior放在等于号前面和后面分别代表什么含义,我相信有不少童鞋都答不上来(前两天有一个来我们公司面试的小伙子就挂在了这道题上),下面是我自己的整理,希望帮助大家理解:

    select * from table1 start with id='0' connect by prior id = parentid
    查询id等于0的节点下面的所有子节点

    select * from table1 start with id='20' connect by id = prior parentid
    查询id等于20的节点上面的所有父节点

    注:prior在“=”前面表示上一个节点(id='0'节点)的id是下一个节点的parentid
           prior在“=”后面表示下一个节点的id是上一个节点(id='20')的parentid,
           总的来说,prior在前是代表查找出给定节点的所有子节点,prior在后表示查找出给定节点的所有父节点
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值