加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Oracle 提供的start with 关键字用法

发布时间:2020-12-12 13:28:36 所属栏目:百科 来源:网络整理
导读:在相关业务查询中,我们常常遇到相关的上下级关系情况,如下图中行政区划关联,此时就要用到Oracle 提供的start with 关键字来帮助我们进行递归查询 基本语法 SELECT ... FROM + 表名 START WITH + 条件1 CONNECT BY PRIOR + 条件2 WHERE + 条件3 条件1:是

在相关业务查询中,我们常常遇到相关的上下级关系情况,如下图中行政区划关联,此时就要用到Oracle 提供的start with 关键字来帮助我们进行递归查询

基本语法

SELECT ... FROM + 表名
START WITH + 条件1
CONNECT BY PRIOR + 条件2
WHERE + 条件3

条件1:是根节点的限定语句,当然可以放宽限定条件,以取得多个根节点,也就是多棵树;在连接关系中,除了可以使用列明外,还允许使用列表达式。
START WITH 子句为可选项,用来标识哪个节点作为查找树形结构的根节点。若该子句省略,则表示所有满足查询条件的行作为根节点。
条件2:是连接条件,其中用PRIOR表示上一条记录,例如CONNECT BY PRIOR a_pid = a_id,意思就是上一条记录的a_pid是本条记录
的a_id,即本记录的父亲是上一条记录。CONNECT BY子句说明每行数据将是按照层次顺序检索,并规定将表中的数据连入树形结构的关系中。
PRIOR运算符必须放置在连接关系的2列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构的顺序是自顶向下,还是自底向上。
条件3:是过滤条件,用于对返回的记录进行过滤。

1,定义查找起始节点
在自顶向下查询树状结构时,不但可以从根节点开始,还可以定义任何节点为起始节点,以此开始,向下查找。这样查找的结果就是以该节点为开始的结构是树的一枝。

例子:
在本例中如果我们想知道红牌楼的所有上级机构,那么sql语句如下:
SELECT * FROM AreaMap
START WITH a_nam = ‘红牌楼‘
CONNECT BY PRIOR a_pid = a_id;

该sql语句执行结果为:

同理,我们想知道成都市 所有的下属机构,则sql语句如下:

SELECT * FROM AreaMap
START WITH a_nam = ‘成都市‘
CONNECT BY PRIOR a_id = a_pid;

该sql语句的执行结果如下:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读