ORACLE中使用递归查询

原创 2013年12月05日 17:04:24
在数据库查询中常常会碰到要查询树形结构的数据,需要用一个字段的数据当做下一条记录的父节点继续查询,如果在不知道有多少级节点的情况下一次次手写SQL查询会很繁琐而没有效率,这时可以使用 oracle中的connect with prior递归算法:
Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: 
select ... from tablename start with 条件1 
connect by 条件2 
where 条件3; 
例: 
select * from table 
start with org_id = 'HBHqfWGWPy' 
connect by prior org_id = parent_id;  

在实际使用时遇到两个问题,一是如果把where子句放在start with...connect by...子句后时会提示:ORA-00933:SQl命令未完全结束。此时光标置于where处,如果将where放在 start with...connect by...子句前则可以正常执行。二是查询的数据中不能有自循环,即例子中的 org_id  和 parent_id 在同一条记录中不能相等,否则会提示:ORA-01436:用户数据中的connect by 循环。这两点需要注意。

补注:在遇到有循环的查询时,使用 connect by NOCYCLE prior 就可以避免报错!

以下是参考到的网络文档:
http://www.cnblogs.com/chen1388/archive/2010/09/25/1834827.html
http://zhidao.baidu.com/question/281792402.html
http://zhidao.baidu.com/question/281792402.html
版权声明:本文为博主原创文章,未经博主允许不得转载。 举报

相关文章推荐

递归算法的经典运用

递归(recursion):程序调用自身的编程技巧 递归满足两个条件: (1)有反复执行的过程(调用自身) (2)有跳出反复执行过程的条件(递归出口)递归例子(常用的地方): (1)阶乘 n...

sqlite3-递归查询

本文是关于sqlite3 的递归查询语法的讲解说明。是一篇译文,原文出自http://www.sqlite.org/lang_with.html 文章的作者也是是sqlite的创造者。 初次接触sq...

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

递归的一些典型应用

--如何查找指定父节点下的所有子节点的一个应用: go create table A (单号 varchar(20) not null, 销售日期 datetime , 类型 varchar(10...

如何去理解递归,想到递归,运用递归

递归:        首先要明白栈的知识,“后进后出” 显示通用树   文本的方式显示一颗树   A  ---------B  ----------------------E...

sqlite 树型结构查询

表结构:tblCity(ID, ParentID, Name) 因为sqlite 没有row_number函数,也不能递归查询,所幸它有RowID 这个字段。只好采用这种 笨方法 1) ...

递归应用解析

递归其实是一个最基本的语言应用。 递归,就是自己调用自己,但是注意得有递归的出口,也就是必须得有一个明确的结束条件,否则会造成死循环等严重的后果。大家有兴趣的可以尝试一下。   废话不多说,先举...

oracle 使用 START WITH…CONNECT BY PRIOR 实现递归查询

Oracle中的select语句可以用START WITH…CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: select * from ...

oracle使用connect by prior对树形表结构进行递归查询

oracle使用connect by prior对树形表结构进行递归查询onnect by prior start with 经常会被用到一个表中存在递归关系的时候。例如,我们经常会将一个目录树存储到...

oracle中进行简单树查询(递归查询) ,PRIOR、CONNECT_BY_ROOT的使用 .

select AD_DEPARTMENT_CODE, AD_DEPARTMENT_UP_LEVEL, AD_DEPARTMENT_NAME   from (select AD_DEPARTMEN...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)