在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;

结果显示:
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

ORACLE 数据库的级联查询相关推荐

  1. oracle级联查询 level,ORACLE 数据库的级联查询 一句sql搞定(部门多级)

    select t.destination from airline t start with origin='CAN' connect by prior destination = origin; 查 ...

  2. 查看oracle数据库启动状态,Oracle数据库的状态查询

    1 状态查询 启动状态 SQL语句 结果 nomount select status from v$instance; STARTED select open_mode from v$database ...

  3. Oracle数据库日期范围查询的两种实现方式

    Oracle数据库日期范围查询有两种方式:to_char方式和to_date方式,接下来我们通过一个实例来介绍这一过程.我们假设要查询2011-05-02到2011-05-30之间的数据,实现方式如下 ...

  4. Oracle数据库之子查询

    Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之过滤和排序 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 SQL> 注意的 ...

  5. Oracle数据库之基本查询

    oracle安装参照: Oracle数据库之安装教程 Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之过滤和排序 Oracle数据库之单行函数 Oracle数据库之多行函数 ...

  6. oracle数据库元数据SQL查询

    oracle数据库经典SQL查询 1.查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size fro ...

  7. 【SSH网上商城项目实战05】完成数据库的级联查询和分页

    上一节我们完成了EasyUI菜单的实现.这一节我们主要来写一下CategoryServiceImpl实现类,完成数据库的级联查询.一般项目从后往前做,先做service(我们没有抽取Dao,最后再抽取 ...

  8. Oracle数据库Date类型查询问题(

    浅谈Oracle数据库Date类型查询问题 用过Oracle数据库的朋友应该知道,Oracle数据库在以Date类型为查询条件时存在一个小小的BUG,如: select * from tableNam ...

  9. Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例

    Oracle数据库:子查询.单行子查询,多行子查询,in,any,all语句,子查询的练习案例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 ...

最新文章

  1. 通过RunLoop监听主线程的卡顿
  2. .NET Core 最小化发布
  3. 《剑指offer》像素翻转
  4. java开发工程师学什么专业,Java核心知识点
  5. 无锡c语言编程培训学校,无锡c语言培训班——C语言基础知识
  6. jquery获取表格中特定列
  7. python语言的类型是_Python的语言类型
  8. java 日期只计算年月日大小_java 日期加减天数、月数、年数的计算方式
  9. 路由器、交换机、集线器
  10. 柯西过程(Cauchy process)
  11. Matlab P文件 p-code 破解解析
  12. 愿你学会优雅地控制自己的情绪
  13. 异常:getInputStream() has already been called for this request
  14. JS实现右键拖动元素
  15. Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack tra
  16. 企业如何成功?先看公司战略(二)
  17. Cris 的Python笔记(六):函数基础
  18. 0x00007FFF77912079 (ucrtbased.dll)处(位于 Demo.exe 中)引发的异常: 0xC0000005: 写入位置 0x000000108FD40000 时发生访问冲突
  19. 绝对限量版PSP[全球只此一台]....
  20. Android 播放自定义铃声

热门文章

  1. 51nod - 1535 深海探险
  2. JS fetch()用法详解
  3. 小程序外卖地图编辑控件实践指南
  4. 【Python人工智能】Python全栈体系(十五)
  5. D. Who killed Cock Robin--“今日头条杯”首届湖北省大学程序设计竞赛(网络同步赛)...
  6. linux xvfb 中文乱码,在Linux上安装xvfb
  7. 我微笑,因为你微笑了
  8. 飞猪“新旅行联盟”成员大集结,双11全球旅行好货预售开始
  9. C++笔记--future
  10. 淘宝API 获取—商品订单详情