• Oracle树形查询


    sql树形递归查询是数据库查询的一种特殊情形,也是组织结构、行政区划查询的一种最常用的的情形之一。下面对该种查询进行一些总结:

    start with子句: 递归的条件,需要注意的是如果with后面的值是子节点那么求出的就是他的父节点和祖宗节点,如果是父节点那么求出的就是他的子节点和子孙节点,

    connect by子句:连接条件。 关键词prior,prior跟它右边的父节点放在一起(a.parent_org)表示往父节点方向遍历, 反之,如果 prior跟子节点放在一起( a.org_id)表示往

    叶子方向遍历。 这里需要注意的  a.org_id放在prior关键词的前面或者后面都没什么关系,也就是上面可以这样写 a.org_id= prior a.parent_org。重要的是prior旁边放的是什么。

    level伪列: 递归的层次表示, 用来进行输出缩进。可以看到递归层次,看起来很直观。 需要注意的是Level 也可以放在Group by后面,也可以放在select 后面.

    1.查询某个节点下的子孙节点

    select a.org_id,a.org_name, a.org_level, a.parent_org,level
    from dir_organ a
    start with a.parent_org=203
    connect by prior a.org_id=a.parent_org;

    2.查找节点的祖先节点

    select a.org_id,a.org_name, a.org_level, a.parent_org,level
    from dir_organ a
    start with a.parent_org=203
    connect by prior a.parent_org=a.org_id ;

    3.start with 和connect by prior的位置可以互换:  

    select a.org_id, a.org_name, a.org_level, a.parent_org, level
    from dir_organ a
    connect by prior a.org_id = a.parent_org
    start with a.parent_org = 203;

  • 相关阅读:
    秋季总结
    PTA第一个编程题总结
    秋季学习总结
    人生路上对我影响最大的三位老师
    自我介绍
    真实的我——自我介绍
    学习总结
    寒假编程总结三
    寒假编程总结二
    寒假编程总结一
  • 原文地址:https://www.cnblogs.com/duanxianyouyang/p/10697249.html
Copyright © 2020-2023  润新知