既然会看Oracle递归查询那么大家应该是比较清楚递归是什么意思了,在这里我就不多加说明了,只作简单介绍了。

言归正传所谓递归查询那么数据表中数据的结构应该是符合递归查询的基本条件,即表中有ID,PID(节点编号、父节点编号)如果把数据以UI的方式展现出来应该是一棵或多棵树了。

那么我们要以其中一个节点去递归查询出这个节点子节点或父节点的过程就是我们所要说明的。

递归查询语法:

select ... from tablenamewhere 条件4start with 条件1connect by 条件2 AND 条件3

如下面的表结构

CREATE TABLESC_DISTRICT

(

IIDNUMBER(10) NOT NULL,

PARENT_IDNUMBER(10),

INAMEVARCHAR2(255 BYTE) NOT NULL,BZ      NUMBER(4)

);ALTER TABLE SC_DISTRICT ADD(CONSTRAINTSC_DISTRICT_PKPRIMARY KEY(IID));ALTER TABLE SC_DISTRICT ADD(CONSTRAINTSC_DISTRICT_R01FOREIGN KEY(PARENT_ID)REFERENCES SC_DISTRICT (IID));

INSERT INTO SC_DISTRICT(IID,INAME) VALUES(1,'四川省');INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(2,1,'巴中市',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(3,1,'达州市',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(4,2,'巴州区',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(5,2,'通江县',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(6,2,'平昌县',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(7,3,'通川区',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(8,3,'宣汉县',0);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(9,8,'塔河乡',1);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(10,8,'三河乡',1);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(11,8,'胡家镇',1);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(12,8,'南坝镇',1);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(13,6,'大寨乡',2);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(14,6,'响滩镇',2);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(15,6,'龙岗镇',2);INSERT INTO SC_DISTRICT(IID,PARENT_ID,INAME,BZ) VALUES(16,6,'白衣镇',2);

如果如图

--查询平昌县的子节点

SELECT * FROM SC_DISTRICT

START WITH INAME = '平昌县'

CONNECT BY PRIOR IID = PARENT_ID

--查询平昌县的父节点

SELECT * FROM SC_DISTRICT

START WITH INAME = '平昌县'

CONNECT BY PRIOR PARENT_ID= IID

--只是过滤节点BZ为0的,但不会过滤掉节点BZ为0的子节点(这点大家注意了),

--当前也有过滤BZ为0的子节点的办法

SELECT * FROM SC_DISTRICT WHERE BZ = 0

START WITH INAME = '平昌县'

CONNECT BY PRIOR PARENT_ID= IID

--此方式不仅可以过滤掉BZ为0的节点而且会不再去遍历此节点的子节点

SELECT * FROM SC_DISTRICT START WITH INAME = '平昌县'

CONNECT BY PRIOR PARENT_ID= IID AND BZ = 0

如果大家对递归的方式比较了解的话上面的几种方式就很容易理解了。

oracle 递归查询,Oracle 递归查询相关推荐

  1. oracle中的递归查询

    一.oracle中的递归查询上下级部门关系 采用的语法为 start with ... connect by ..... = prior .... 我们部门表中存在这样几条记录 id parent_i ...

  2. oracle循环递归查询,Oracle 递归查询的用法

    Oracle数据库中常要处理一些父子关系的记录,在OLTP中要用得多一些,oracle提供了递归查询可以很容易的满足这个需求,oracle的递归查询通过start with [condition] c ...

  3. sql oracle 递归查询语句,oracle递归函数 oracle中SQL递归查询

    关于oracle递归调用的自定义函数如何结束 比如存储过程a中有b,b中含a.用return结束判断,执行还是锁表,怎么解决 关于oracle递归调用的自定义函数如何结束 可以调用. C语言最基本的模 ...

  4. Oracle笔记 之 递归查询

    递归查询 在信息系统中需要数据字典表等树状结构的数据,使用递归查询能够快速地获取树状结构数据的关联关系. 树状结构的数据存放在数据表中,数据之间的层次关系(父节点与子节点)通过表的列与列之间的关系来描 ...

  5. Linux下docker安装配置oracle,oracle创建用户并远程连接,实测可用!

    最近在给同学弄毕业设计的数据库,因为oracle在个人电脑上极不稳定,所以他的电脑数据库崩溃了,这时候我就在docker上为他拉了一个oracle,解决了问题. docker的安装共有以下几步,实测没 ...

  6. oracle自动化,Oracle 自动化备份脚本

    备份脚本,基于linux,windows环境需要适当修改. 主脚本,会调用2,3步骤的rman.sql&status.sql $ more main.sh #set env ######### ...

  7. it oracle 培训,Oracle数据库技术培训_OracleDBA数据库工程师_Oracle数据库在线学习视频教程_IT职业培训-51CTO学院_精培学院...

    第一阶段:企业级Oracle数据库实战入门与集群实施 特色:本阶段部分内容为OCP/OCM课程内容,以企业实战项目为主导讲解,实用性更强. 第1章 Oracle数据库高级工程师职业发展与学习方法 第2 ...

  8. 【oracle】oracle经典sql,exception,database link纠错

    [oracle]oracle经典sql,exception,database link纠错 1111-01 oracle经典sql,exception,database link纠错 1.给表tabl ...

  9. oracle v$system_event,45.Oracle杂记——Oracle常用动态视图v$system_event

    45.Oracle杂记--Oracle常用动态视图v$system_event 视图v$system_event 显示一个事件的总共等待. 如果不支持计时机制,那么TIME_WAITED和AVERAG ...

  10. oracle 202,Oracle Certification 1Z0-202题库

    Oracle Other Oracle Certification 1Z0-202 考题名称:Siebel 8 Consultant Exam 版本号:V2.40 更新时间:2011-09-14 考题 ...

最新文章

  1. web应用程序和web网站_Web应用程序和移动应用程序的基本启动清单
  2. php成绩管理前段模板,php学生成绩管理系统(模板).doc
  3. IBM----Yacc 与 Lex 快速入门
  4. 使用flink Table Sql api来构建批量和流式应用(2)Table API概述
  5. 深度学习NCHW和NHWC数据格式(由三维数据转换成一维数据的遍历方式)
  6. 同事说rar压缩有风险,让我用zip压缩文件
  7. ECCV 2020 GigaVision挑战赛“行人和车辆检测”和“多目标追踪”冠军方案解读
  8. eclipse Maven配置
  9. siamfc代码解读_每日一文:目标跟踪(SiamFC)
  10. MATLAB中如何取整
  11. 经典日内策略分析(收藏版)Dual Thrust、ATR、R-Breaker、菲阿里四价
  12. Uiautomator 2.0之BySelector类学习小记
  13. python-opencv尺寸测量
  14. XjhDemo 插入数据
  15. 任务调度:全网最全 xxl-job任务触发流程
  16. 惊醒!北漂,你到底在漂什么?
  17. 高通平台开发系列讲解(AI篇)SNPE工作流程介绍
  18. 【Linux】set ff=unix
  19. 可以降低汽车气缸里面的机油由于摩擦产生的蓝烟的机油添加剂
  20. 【ROS Gazebo专题】四、将Fetch机器人放到Gazebo中进行玩耍

热门文章

  1. 勘误表:《信息论与编码理论(第二版)》,王育民、李晖,高等教育出版社...
  2. win11家庭版远程桌面无法连接,出现“这可能是由于CredSSP加密数据库修正问题”解决方案
  3. nodejs连接mysql报错:Client does not support authentication protocol requested by server; consider upgrad
  4. 有关手机内程序系统平台的介绍
  5. 苹果手机怎么学python_我是如何在 Python 内使用深度学习实现 iPhone X 的 FaceID 的...
  6. 我们的GAME-TECH沙龙北京站完美收官了,都讨论了些啥?
  7. 前端OPTIONS请求
  8. 文件夹中不显示SolidWorks缩略图的解决办法
  9. centos 重启网卡
  10. SQL service 安全管理(1)登录名(创建与删除)