在数据库查询中常常会碰到要查询树形结构的数据,需要用一个字段的数据当做下一条记录的父节点继续查询,如果在不知道有多少级节点的情况下一次次手写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 循环。这两点需要注意。
以下是参考到的网络文档:
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
http://blog.sina.com.cn/s/blog_70717ff001010lgc.html
分享到:
相关推荐
本文将详细介绍如何在Oracle中使用递归查询,并通过具体的示例来展示其用法。 #### 二、递归查询的基础概念 递归查询是Oracle中一种特殊的查询方式,主要用于检索具有层次结构的数据。在Oracle中实现递归查询需要...
oracle 递归调用 地区 ,用到的方法是 SYS_CONNECT_BY_PATH,可以扩展层级 名称
在`Oracle中的树状查询(递归查询) - 鱼与飞鸟 - CSDNBlog.htm`这篇博客中,作者通过具体的实例详细讲解了如何在权限查询中使用递归查询,包括如何建立树形结构,以及如何避免无限递归等问题。 8. **补充资源** - ...
这里,我们将深入探讨如何使用递归查询来构建菜单树,并特别关注在MySQL和Oracle这两种广泛使用的数据库系统中的实现。 首先,我们要理解什么是递归查询。递归查询是一种在数据库中处理层次数据的方法,它通过自身...
在数据库查询语言中,Oracle 提供了一种强大的功能——递归查询,这在其他数据库系统如 SQL Server 中是缺失的功能。递归查询允许用户执行多级关联查询,特别适用于处理具有层次结构的数据,例如组织结构图、文件...
Oracle数据库在处理树形结构数据时提供了强大的递归查询功能,这种特性对于组织结构、产品分类、层级菜单等场景的应用非常广泛。递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的...
在 Oracle 中,递归函数可以使用 CONNECT BY 语句来实现递归查询。CONNECT BY 语句的基本语法如下所示: ```sql SELECT ... FROM ... START WITH ... CONNECT BY ... ``` 其中,`START WITH` 子句指定了递归查询的...
这是Oracle递归查询的关键部分。`connect by`子句定义了层次之间的连接规则。在这里,`prior`关键字用来引用上一层的值,即父节点的`parent_id`应该等于当前行的`id`,这样我们就沿着父到子的方向遍历树。 3. `...
oracle递归查询
### Oracle递归查询详解 #### 一、引言 在处理具有层级结构的数据时,递归查询是一项非常有用的技能。例如,在处理组织架构、产品分类等数据时,我们经常需要查询某一节点及其所有子节点或者从某个节点追溯到其根...
描述中提到,使用Oracle递归查询比在程序中实现递归查询速度更快。这是因为数据库系统通常针对这类操作进行了优化,能够更高效地处理层次结构数据。此外,数据库可以利用索引和其他优化技术,提高查询速度。而在应用...
oracle 如何递归查询父子关系。经常用于构造树结构
本文将深入探讨这两个数据库系统中如何使用递归查询语句来操作树形结构。 首先,让我们理解什么是树形结构。在数据存储中,树形结构是一种层次化的数据模型,它由节点(或称为记录)组成,每个节点可以有零个或多...
以下是在Oracle中进行递归查询的例子: ```sql SELECT id, name, CONNECT_BY_ROOT id AS root_id FROM employees START WITH id = some_employee_id CONNECT BY PRIOR id = manager_id; ``` 六、注意事项与优化 1....
反之,如果当前行是子行,则PRIOR column_name指向下一次递归中的column_name值。树结构表的递归查询可以用来检索组织结构、分类目录、流程跟踪等层级数据。 MSSQL中实现递归查询的方式不同于ORACLE。在MSSQL中,...
MySQL 递归查询是指在 MySQL 中实现类似 Oracle Hierarchical Queries 的功能,用于查询树形结构中的所有子节点。由于 MySQL 目前还没有内置的递归查询功能,因此需要使用其他方法来实现。 第一种方法:使用函数来...
#### 一、Oracle中的递归查询方法 在Oracle数据库中,递归查询可以通过`START WITH CONNECT BY PRIOR`语句实现。此语句允许用户按照树状结构来检索数据。 ##### 1. `START WITH CONNECT BY PRIOR`用法详解 **基本...
在Oracle数据库中,递归查询是一种强大的工具,用于处理层级数据结构,如组织结构、文件系统或树形关系。在本篇文章中,我们将探讨如何利用递归查询来查找父子兄弟节点,这对于理解和处理这类关系非常关键。 首先,...
在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织结构、产品分类、文件系统等场景中,通过递归查询可以方便地获取树状或层级...
在SQL Server 2005中,递归查询使用的是`WITH`子句配合`UNION ALL`,其基本思想与Oracle类似,只是语法有所不同。例如,找出1号节点的所有子节点的查询如下: ```sql WITH my1 AS ( SELECT * FROM aaa WHERE id = ...