zoukankan      html  css  js  c++  java
  • Oracle 提供的start with 关键字用法

    在相关业务查询中,我们常常遇到相关的上下级关系情况,如下图中行政区划关联,此时就要用到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:是过滤条件,用于对返回的记录进行过滤。

    1,定义查找起始节点
    在自顶向下查询树状结构时,不但可以从根节点开始,还可以定义任何节点为起始节点,以此开始,向下查找。这样查找的结果就是以该节点为开始的结构是树的一枝。

    例子:
    在本例中如果我们想知道红牌楼的所有上级机构,那么sql语句如下:
    SELECT * FROM AreaMap
    START WITH a_nam = '红牌楼'
    CONNECT BY PRIOR a_pid = a_id;

    该sql语句执行结果为:

    同理,我们想知道成都市 所有的下属机构,则sql语句如下:

    SELECT * FROM AreaMap
    START WITH a_nam = '成都市'
    CONNECT BY PRIOR a_id = a_pid;

    该sql语句的执行结果如下:

  • 相关阅读:
    css-断网图片加载失败,图片表情与文字对齐
    工作中遇到一些不会写的样式
    基础知识题目
    前端基础知识html css
    js match
    jquery.extend()与jquery.fn.extend()的区别
    js apply 与 call
    jdk安装
    js数组操作各种方法
    js获取日期
  • 原文地址:https://www.cnblogs.com/widget90/p/9385791.html
Copyright © 2011-2022 走看看