一文讲清oracle的connect by关键字

1、作用:
用于存在父子,祖孙,上下级等层级关系的数据表进行层级查询。

2、语法

2.1、说明
start with: 指定起始节点的条件

connect by: 指定父子行的条件关系

prior: 查询父行的限定符,格式: prior column1 = column2 or column1 = prior column2 and … ,

nocycle: 若数据表中存在循环行,那么不添加此关键字会报错,添加关键字后,便不会报错,但循环的两行只会显示其中的第一条

循环行: 该行只有一个子行,而且子行又是该行的祖先行

connect_by_iscycle: 前置条件:在使用了nocycle之后才能使用此关键字,用于表示是否是循环行,0表示否,1 表示是

connect_by_isleaf: 是否是叶子节点,0表示否,1 表示是

level: level伪列,表示层级,值越小层级越高,level=1为层级最高节点
3、构造数据
在这里插入图片描述
在这里插入图片描述
4、查询jack下的所有子节点
在这里插入图片描述
5、查询jack和arise下的所有子节点
在这里插入图片描述
6、查询jack的祖先节点
在这里插入图片描述
7、查询一个节点的叔叔伯父节点
在这里插入图片描述
8、查询族兄
在这里插入图片描述
9、level伪列的使用,格式化层级
在这里插入图片描述
10、connect_by_root 查找根节点
在这里插入图片描述
11、connect_by_isleaf 是否是叶子节点
在这里插入图片描述
12、使用connect by rownum生成序列
ROWNUM是一个伪列,即先查到结果集之后再加上去的一个列,它的取值从1开始排依次递增。ROWNUM其实是oracle数据库从数据文件或缓冲区中读取数据的顺序。取得第一条记录则rownum值为1,第二条为2,依次类推。
connect by rownum是通过递归迭代第一行生成一个序列。格式如下:
在这里插入图片描述
例如:
12.1 生成1-5之间的一个序列
在这里插入图片描述
12.2 生成10个60到100之间的随机整数
在这里插入图片描述
12.3 生成连续的日期值
在这里插入图片描述

  • 25
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

encoding-console

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值