Oracle级联查询

在ORACLE数据库中有一种方法可以实现级联查询select*//要查询的字段fromtable//具有子接点ID与父接点ID的表startwithselfid=id//给定一个

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

在ORACLE 数据库中有一种方法可以实现级联查询
 
select  *                //要查询的字段
from table              //具有子接点ID与父接点ID的表 
start with selfid=id      //给定一个startid(字段名为子接点ID,及开始的ID号)
connect by prior selfid=parentid       //联接条件为子接点等于父接点
 
这个SQL主要用于级联查询,给一个父接点可以查出所有的子接点。及子接点的子接点,一查到底,很实用。
 
例:航班表
airline,如何用sql语句查询出从广州出发能到达的所有目的地,允许任意中转。
 
FLIGHTNO ORIGIN  DESTINATION

——————————————-

cz3001  CAN  CSX

cz3002  CAN  SHA

cz3003  CSX  SHA

cz3004  CSX  PEK

cz3005  SHA  XIY

cz3006  SHA  SWA

cz3007  PEK  URC

cz3008  PVC  AMS

cz3009  WUH  PVC

cz3010  WUH  XIY
 
这里根就是CAN,SQL语句如下:
 

select t.destination from airline t start with origin=’CAN‘ connect by prior destination = origin;
 
查询结果:

DESTINATION

——————-

CSX  

SHA  

XIY  

SWA  

PEK  

URC  

SHA  

XIY  

SWA 
 

9 rows selected.
 
--------------------------------
 
 
在网上看到下面的例子应该更容易理解些,转载一下:
 
 
数据结构如下:

t1

 t11

     t111

        t1111

 t12

     t121

        t1211

 

db数据字段如下:

task_id             task_name         t.parent_task_id       ***

***                     ***                          ***                               ***

000001            t1                         ***                                 ***

000002            t11                       000001                        ***

000005            t12                       000001                         ***

000003            t111                    000002                         ***

000004            t1111                  000003                         ***

000006            t121                    000005                         ***

000007            t1211                  000006                         ***

***                     ***                       ***                                 ***

查询语句:

select t.task_id ,t.task_name ,t.parent_task_id 

from t_task t 

start with task_id=’000001′

connect by prior task_id = parent_task_id;
http://roucheng.cnblogs.com/

结果显示:

task_id                 task_name          t.parent_task_id

000001                t1           

000002                t11                       000001

000003                t111                     000002

000004                t1111                    000003

000005                t12                       000001

000006                t121                     000005

000007                t1211                   000006

strat with 指定层次开始的条件,即是说满足这个条件的行即可以做为层次树的最顶层 
  
connect by prior指层之间的关联条件,即什么样的行是上层行的子行(自连接条件)
 
select level ,id,name,parentid from temptable2 
  connect by prior parentid(属于顶层的列)=id(子层的列)  start with id =1

http://www.cnblogs.com/roucheng/p/5404594.html

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

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/120618.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 金士顿有2t的u盘吗_群联3110主控

    金士顿有2t的u盘吗_群联3110主控最近新买的金士顿DT101G2U盘用老版本的群联检测工具GETinfo如GETinfov3.2.9.2会不认识MP的版本,一般会显示为MPv48.30.30,而使用新版本的如GETinfov3.5.7.2会显示MPALLv3.13.0B或MPALLv3.12.0A等。而这些版本网上都无释出版本的量产工具,怎么办呢,很多人都不知道该怎么选择量产工具的版本了。这里根据我成功…

  • Idea 2021.8.5 永久激活码(JetBrains全家桶)

    (Idea 2021.8.5 永久激活码)最近有小伙伴私信我,问我这边有没有免费的intellijIdea的激活码,然后我将全栈君台教程分享给他了。激活成功之后他一直表示感谢,哈哈~https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~S32P…

  • Django(14)模型中常用的属性(超详细)[通俗易懂]

    Django(14)模型中常用的属性(超详细)[通俗易懂]模型中常用字段字段说明AutoField一般不需要使用这个类型,自增长类型,数据表的字段类型为整数,长度为11位BigAutoField自增长类型,数据表的字段类型为bigint,长度为2

  • 开关三极管的导通和截止条件「建议收藏」

    开关三极管的导通和截止条件「建议收藏」转自:https://blog.csdn.net/ruanjianruanjianruan/article/details/38523973三极管在我们数字电路和模拟电路中都有大量的应用,在我们开发板上也用了多个三极管。在我们板子上的LED小灯部分,就有这个三极管的应用了,图3-5的LED电路中的Q16就是一个PNP型的三极管。图3-5 LED电路三极管的初步认识三极管是一…

  • 「mac版」支持flash的浏览器,谷歌浏览器Chrome、火狐浏览器Firefox

    「mac版」支持flash的浏览器,谷歌浏览器Chrome、火狐浏览器Firefox谷歌浏览器的苹果系统版V87,最后一版支持flash一共两个版本,一个英特尔的处理版,一个苹果M1处理器版。下载官网:https://www.google.cn/chrome/v87.0.4280.66英特尔处理器版网盘下载黑苹果的下载这个链接:https://pan.baidu.com/s/1ZvNw-qV-_s8mYn2RGDH5cw提取码:87vfhttps://loadream.lanzouo.com/ii4lfil6l7ihttps://cloud.189.cn/t/VFz

  • SpringCloud Alibaba完整使用

    SpringCloud Alibaba完整使用搭建AlibabaCloud首先搭建几个环境全部在Linux下1、nacos注册中心2、sentinel流量控制,断路3、apache-skywalking-apm-bin监控接口的速度、效率等等4、Rocketmq的使用项目如下在这里插入代码片首先创建pom工程***Alibaba-Cloud***|<?xmlver……

发表回复

您的电子邮箱地址不会被公开。

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