Oracle 递归查询 (start with ...connect by ...prior)
发布日期:2021-08-14 08:22:14 浏览次数:6 分类:技术文章

本文共 921 字,大约阅读时间需要 3 分钟。

1、connect by 是结构化查询中用到的,其基本语法是:

select … from tablename

start with 条件1
connect by 条件2
where 条件3;
例:
select * from table
start with org_id = ‘HBHqfWGWPy’
connect by prior org_id = parent_id;
 
 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
org_id,parent_id那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
        用上述语法的查询可以取得这棵树的所有记录。
        其中:
        条件1 是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
        条件2 是连接条件,其中用
PRIOR表示上一条记录,比如 
CONNECT BY 
PRIOR org_id = parent_id;就是说
上一条记录的org_id 是本条记录的parent_id,即本记录的父亲是上一条记录。
例子中表示:从org_id的值为HBHqfWGWPy的这条记录开始查询,将该条记录的org_id 等于即将查询记录的 parent_id的所有记录查询出来,即查询org_id的值为HBHqfWGWPy这条记录的所有子节点。
        
条件3 是过滤条件,用于对返回的所有记录进行过滤。
2.关于PRIOR
        运算符PRIOR被放置于等号前后的位置,决定着查询时的检索顺序。
        PRIOR被置于CONNECT BY子句中等号的前面时,则强制从根节点到叶节点的顺序检索,即由父节点向子节点方向通过树结构,我们称之为自顶向下的方式。如:
         CONNECT BY PRIOR EMPNO=MGR
         PIROR运算符被置于CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,即由子节点向父节点方向通过树结构,我们称之为自底向上的方式。
例如:
         CONNECT BY EMPNO=PRIOR MGR
         在这种方式中也应指定一个开始的节点。

转载于:https://www.cnblogs.com/gXing/p/9298152.html

转载地址:https://blog.csdn.net/weixin_30715523/article/details/96270213 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Apache+tomcat配置集群(1)
下一篇:Microsoft Visual Studio 2012旗舰版(VS2012中文版下载)官方中文版

发表评论

最新留言

初次前来,多多关照!
[***.217.46.12]2024年04月06日 08时31分35秒