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

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

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

(0)
上一篇 2021年12月22日 下午4:00
下一篇 2021年12月22日 下午5:00


相关推荐

  • Springboot事务处理[通俗易懂]

    Springboot事务处理[通俗易懂]采用Aop对项目进行全局异常事务处理@Aspect@ConfigurationpublicclassTransactionAdviceConfig{ privatestaticfinalStringAOP_POINTCUT_EXPRESSION=”execution(*demo.service.impl.*.*(..))”; @Autowired privatePlatformTransactionManagertransactionManager; @Be

    2022年6月8日
    42
  • 2022美赛A题思路分享

    2022美赛A题思路分享2022美赛A题思路分享

    2022年5月18日
    40
  • 冒泡排序(超详细)

    冒泡排序(超详细)1 什么是冒泡排序 冒泡排序的英文 BubbleSort 是一种最基础的交换排序 之所以叫做冒泡排序 因为每一个元素都可以像小气泡一样 根据自身大小一点一点向数组的一侧移动 冒泡排序的原理 每一趟只能确定将一个数归位 即第一趟只能确定将末位上的数归位 第二趟只能将倒数第 2 位上的数归位 依次类推下去 如果有 n 个数进行排序 只需将 n 1 个数归位 也就是要进行 n 1 趟操作 而 每一趟 都需要从第一位开始进行相邻的两个数的比较 将较大的数放后面 比较完毕之后向后挪一位继续比较下面

    2026年3月20日
    2
  • Intellij IDEA打开Java项目并启动「建议收藏」

    Intellij IDEA打开Java项目并启动「建议收藏」最近有很多同学,竟然不知道如何使用IntellijIDEA打开Java项目并启动目录Maven项目2、Maven项目是以pom文件引入各项jar包的在点击lmportProject,然后在点击pom.xml,再点击Open​3、再点击Next​4、如果是公司的私服,还需要勾选nexus​5、继续点击下一步​6、选择Jdk版本,点击下一步​7、点击Finish​……

    2022年7月8日
    184
  • IDEa快捷键_idea进入方法快捷键

    IDEa快捷键_idea进入方法快捷键一、IntelliJIDEA快捷键大全Win版一、Ctrl快捷键 快捷键 说明 常用 Ctrl+F 在当前文件进行文本查找 √ Ctrl+R 在当前文件进行文本替换 √ Ctrl+Z 撤销 √ Ctrl+Y

    2022年10月1日
    4
  • translate3D(前端)

    translate3D(前端)本人是一位撸代码的萌新 下面是刚学的代码 以后也会敲一些代码在本人的账号下下面是 html 的代码和 css 的代码 DOCTYPE tml html head metacharset utf 8 title translate3D 方法 title style style metacharset utf 8 head html

    2026年3月17日
    2

发表回复

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

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