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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Excel之VBA简单宏编程

    Excel之VBA简单宏编程Excel之VBA简单宏编程excel是一款很经典的数据分析的工具,里面包含了很多内置函数,但实际情况有时却复杂得多,而excel的宏编程提供了自定义函数的功能,正好有老师需要帮忙做一些数据分析,就学习了一下,下面是我的学习笔记。本人使用的是excel2013。有出入的地方可以参考。Excel之VBA简单宏编程1、准备工作2、VBA编程2.1模块声明2.2变量声明及赋值2…

    2022年6月13日
    85
  • id门禁卡复制到手机_使用iPhone解锁开门?手机复制门禁卡教程分享

    id门禁卡复制到手机_使用iPhone解锁开门?手机复制门禁卡教程分享使用iPhone解锁开门?手机复制门禁卡教程分享2020-01-1013:31:24173点赞1746收藏262评论对于安卓用户来说,NFC功能是考量一部手机是否是旗舰水准的一项重要指标。而对于iPhone用户,从iPhone6S开始就搭载了NFC功能,却仅仅可以使用ApplePay支付功能,对于国内大部分实体店来说ApplePay的普及程度也不高,NFC功能实际上就一直被闲置着。最近楼主…

    2022年5月5日
    256
  • 系统临时文件的写和读:createTempFile和tempFileContent[通俗易懂]

    写java的时候,有时候查到的数据暂时用不到,我们可以把它写到一个临时文件中。今天写项目的时候发现了这个好方法。将context的内容写到临时文件@PostMapping("/temp")@ResponseBodyStringtemp(@RequestParamStringcontent)throwsIOException{FiletempFil…

    2022年4月11日
    46
  • imb服务器怎么拆硬盘,IBM P750更换本地硬盘

    imb服务器怎么拆硬盘,IBM P750更换本地硬盘1、确认故障主机报警和硬盘ERPES01@/>errpt-dH|moreIDENTIFIERTIMESTAMPTCRESOURCE_NAMEDESCRIPTION80D3764C0301180416UHLVDDPVNOLONGERRELOCATINGNEWBADBLOCKSE86653C30301180416PH…

    2022年6月29日
    37
  • hg261gu光猫说明书_hg2201t光猫设置教程

    hg261gu光猫说明书_hg2201t光猫设置教程电信光纤友华PT921G光猫激活成功教程关闭自带路由改桥接拨号教程电信光猫质量烂就算了,最受不了它自带的路由还做了手脚,导致VPN用不了。不让看AV就算了,打个外服游戏总可以吧?不知道为啥,网上关于光猫改桥接的教程基本没有,搜出来的也说得很不清楚,是和谐了还是什么原因不得而知。本人也是自己自己试出来的,其实修改难度并不大,只不过那个界面搞的特奇葩特不友好罢了。废话不多说,步骤如下:

    2022年10月8日
    1
  • 【VUE】- 前端封装之父子组件传值

    【VUE】- 前端封装之父子组件传值前端代码进行抽象与封装离不开父子组件传值问题,做的过程中总有梳理不清楚的时候,在此总结一波,一方面是自己梳理梳理思路,另外一方面有需要的伙伴们也可以瞅一瞅,本文是从开始到最后实现数据的一个操作过程;父组件向子组件传值1、可抽离的静态页面首先是看一下自己的静态页面有哪些相似之处可以被抽象出来,如下面这个页面,看似不一样,实则都是一样的,只是图标和文字内容不一致,OK了解后我们可以开始设计静态页…

    2022年5月16日
    45

发表回复

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

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