• oracle中进行递归查询


    在相关业务查询中,我们常常遇到相关的上下级关系情况,如组织层级等,这个时候可以使用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:是过滤条件,用于对返回的记录进行过滤。

    SQL示例如下:

    -- 递归查询 上一条记录的orgno是本条记录的parentorgno,即本记录的父亲是上一条记录。
    SELECT * FROM sys_org t1 START WITH t1.orgno = '100999' CONNECT BY PRIOR t1.orgno = t1.parentorgno ;
    

    参考博文:
    (1)https://www.cnblogs.com/widget90/p/9385791.html (oracle sql实现递归查询,生成树)

  • 相关阅读:
    git使用
    javascript关于事件与闭包
    Ajax和跨域
    通过触发器进行的操作
    30分钟学会jquery插件
    那些年用过的jquery插件
    网页设计常用网页技巧
    XML操作
    效果A:浏览器跳转以及判断来路客户信息
    数据库
  • 原文地址:https://www.cnblogs.com/jasonboren/p/14954642.html
Copyright © 2020-2023  润新知