• Oracle 递归查询 (start with ...connect by ...prior)


    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
             在这种方式中也应指定一个开始的节点。
  • 相关阅读:
    python 爬取网络小说 清洗 并下载至txt文件
    2020.11.25收获
    2020.11.24收获
    2020.11.23收获
    2020.11.22收获
    2020.11.21收获
    Java学习11.21(使用 Servlet 完成控制)
    Java学习11.20
    Java学习11.19(学习servlet第三天)
    Java学习11.17(人口普查前端页面)
  • 原文地址:https://www.cnblogs.com/gXing/p/9298152.html
Copyright © 2020-2023  润新知