• connect by prior start with


    oracle 中 connect by prior 实现递归查询,基本语法如下:

    SELECT * FROM tablename
    where <condition1>
    connect by prior <condition2>
    start with <condition3>

    以 Oracle 中表: employees 为例演示过程:

    employees 中和树形结构有关的字段为  employee_id, manager_id。

    截图表中部分数据并用树形结构表示出来:

    说明:分支节点为manager,同时也是employee; 叶子节点不是 manager,仅为employee。

    执行下面的 sql:

    SELECT LEVEL, 
           e.employee_id, 
           e.manager_id
      FROM employees e
     WHERE 1 = 1
    CONNECT BY PRIOR e.employee_id = e.manager_id
    START WITH e.employee_id = 101; 

    结果如下:

    下面对代码加以分析:

    -- 从 employee_id = 101开始,查询 manager_id 为 101 的节点,有:108
    -- 以 employee_id = 108 为父节点, 查询 manager_id = 108 的节点,有:109,110,111,112,113
    -- 101 -> 108 -> 109 ... 递归结束后,继续找 101 的其他子节点,有:200,203,204,205

    1.以 prior 所在等式的一侧为父节点

    CONNECT BY PRIOR e.employee_id = e.manager_id
    --即以 employee为父节点

    2.start with 是递归查询的起始点

    START WITH e.employee_id = 101
    -- 从 employee_id = 101 这个节点开始查询

    3. where 条件会对查询的所有结果进行筛选

  • 相关阅读:
    使用android-ndk官方ndkbuild例子
    小米8如何root
    Ubuntu点击dash home就崩溃
    Python自定义排序
    adb命令
    sqoop数据导出导入命令
    Docker命令详解
    如何输出第二列相同的行
    如何使用Xmanager及VNC登录远程桌面
    搭建GoldenGate的单向复制环境
  • 原文地址:https://www.cnblogs.com/chenyongjun/p/connect_by_prior.html
Copyright © 2020-2023  润新知