oracle 的 start with … connect by …

oracle 的 start with … connect by …

语法:

   select * from some_table

                  [where 条件1]

                  connect by [条件2]

                  start with [条件3];   

其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果,[where 条件1]可以不需要。

 [where 条件1]、[条件2]、[条件3]各自作用的范围都不相同:     

 [where 条件1]

是在根据“connect by [条件2] start with [条件3]”选择出来的记录中进行过滤,是针对单条记录的过滤, 不会考虑树的结构(最后的过滤);

 [ connect by 条件2]

指定构造树的条件,以及对树分支的过滤条件,在这里执行的过滤会把符合条件的记录及其下的所有子节点都过滤掉;   

 [ start with 条件3]

限定作为搜索起始点的条件,如果是自上而下的搜索则是限定作为根节点的条件,如果是自下而上的搜索则是限定作为叶子节点的条件; 

要根据connect by 从上到下还是从下到上,来确定起始节点,可能是叶节点,也可能是父节点,这些开始节点可以是多个,并且包含这些节点。

 ==========================================================================

例子:

表结构:

-- Create table

create table A

(

  id NUMBER,

  name VARCHAR2(20),

  pid NUMBER

)

 

oracle 的 start with ... connect by ...

select * from A start with id=2 connect by prior id=pid;–从父到子(从上到下)
 
 
oracle 的 start with ... connect by ...
 
select * from A start with id=2 connect by prior pid= id; –从子到父  (从下到上)
 
oracle 的 start with ... connect by ...
 
select * from A start with id=2 connect by pid= id;   –不会进行循环
oracle 的 start with ... connect by ...


 

对prior的理解

1.prior可以不要,不要的时候只能查找到符合“start with [条件3]”的记录,不会在寻找这些记录的子节点或父节点。

2.

 connect by prior id=pid  采用自上而下的搜索方式(先找父节点然后找子节点)

 connect by id=prior pid采用自下而上的搜索方式(先找叶子节点然后找父节点)

 

从子节点到父节点,则prior指的是子节点,构造出从子节点到父节点的关系,即子节点的pid=父节点的id (prior pid=id) ;从父节点到子节点,则prior指的是父节点,构造出从父节点到子节点的关系,即父节点的id=子节点的pid(proid id =pid)。

3.prior id=pid 和 pid=prior id  效果是一样的。

转载于:https://www.cnblogs.com/lion88/p/4186980.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/109615.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++实现远程桌面集群软件[通俗易懂]

    C++实现远程桌面集群软件[通俗易懂]由于在学校需要管理很多主机的需要,自己动手写了个3389桌面集群的软件。软件很简单,分别用2种方式实现:(1)快速登入模式:微软的MsRdpClientActiveX控件实现(2)远程桌面模式:生成.rdp文件实现

    2022年10月15日
    2
  • Lotus Notes视图索引的机制

    Lotus Notes视图索引的机制
    内容提要:
    本文对视图的索引机制进行说明。包括:术语、索引的机制、视图索引的选项说明。
    说明
    视图索引的机制
    第1章概述
    本文档主要是对视图的索引机制进行说明。包括:术语、索引的机制、视图索引的选项说明。
    文档中用到的术语:
    更新(Refresh):按F9可以刷新视图的索引。Refresh读视图的索引并刷新用户的屏幕。它不会重建视图的索引。
    重建(Rebuild):按Shift+F9可以重建视图的索引。重建视

    2022年7月22日
    19
  • Python—socket编程

    Python—socket编程

    2022年2月12日
    39
  • 【PHP】PHP获得第一章

    【PHP】PHP获得第一章

    2022年1月12日
    46
  • stat 函数详解

    stat 函数详解stat函数作用:获取文件信息头文件:include<sys/types.h>#include<sys/stat.h>#include<unistd.h>​函数原型:intstat(constchar*path,structstat*buf)​返回值:成功返回0,失败返回-1;​参数:文件路径(名),structstat…

    2025年8月5日
    4
  • SELECT DISTINCT

    SELECT DISTINCT

    2021年8月16日
    321

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号