oracle层次查询中prior与自上而下、自下而上查询

作为一名开发和管理兼修的工程师,有时候会遇到编写复杂的sql ,此时就会查找资料,事后又很快会忘记。记得自己每次编写层次结构的时候都会找资料,到底谁是父亲,谁是孩子,prior放在那边代表什么意思。

今天主要把层次的语法进行分析,并用自己的理解记住自顶向下和自底向上。

基本语法很简单:

select ... from table where 条件  
connect by prior column1=column2
start with
order [siblings] by;
  • 1、where 条件很好理解,就是在整个查询结果的基础上,进行过滤;并非过滤之后再查询。
  • 2、start with 也很好理解,表示从什么开始,通常表示指定一个树的根节点或者一个树的叶子节点;这取决于你是自顶向下还是自底向上。
  • 3、order [siblings] by主要是排序,可以按照各种条件进行排序,siblings定义了同一个父亲下的兄弟之间的排序。
  • 4、connect by 这是每次容易弄混淆的:

理解connect by ,举例如下

prior child_id = parent_id <=> parent_id=prior child_id

prior parent_id=child_id <=> child_id=prior parent_id

等式两边互换位置是等价的。

当prior放在那一边时,我们可以翻译为找什么;比如第一个prior child_id 可以翻译为找孩子;prior parent_id 翻译为找父亲;这样找孩子的话,可以就是自顶向下了,找父亲就是自底向上。

有个这个理解,写层次查询时,就知道如何摆放prior位置了。

5、还有一个伪列level,代表着层次。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值