引言:
有老朋友找我打听oracle递归查询用法,压根没听说过。了解了一下,留个简单例子,方便将来复习。
正文:
1)概念。
直接度娘“oracle递归查询”,翻到“select * from table_ start with id = 0 connect by prior pid = id”,看看就明白了。
2)例子。
笔者在实验这个问题的时候,不巧测试数据库的机子被外星人占领了,说14:00还我们。。。于是来个很歪的写法。也算多个看点吧。
直接上代码
select t_.a, t_.b, t_.c
from (
select 1 as a, 8978 as b, 0 as c from dual
union select 2, 777, 1 from dual
union select 3, 666, 2 from dual
union select 4, 78945, 2 from dual
union select 5, 1234, 1 from dual
union select 6, 4678, 1 from dual
) t_
-- t_.a = ? 通过修改'?'的值来取,所有a=?的子结点,以及子结点的子结点。
start with t_.a = 2
connect by prior t_.a = t_.c;
/* output
1 2 777 1
2 3 666 2
3 4 78945 2
*/
最后一行也可写为
-- 把'='两端的对调过来。表示取a=?为子结点的根结点,以及根结点的根结点。
connect by prior t_.c = t_.a;
/* output
1 2 777 1
2 1 8978 0
*/
引用:
oracle 递归查询
分享到:
相关推荐
这是Oracle递归查询的关键部分。`connect by`子句定义了层次之间的连接规则。在这里,`prior`关键字用来引用上一层的值,即父节点的`parent_id`应该等于当前行的`id`,这样我们就沿着父到子的方向遍历树。 3. `...
本文将深入探讨如何通过递归查询来解决这类问题,并着重讲解使用`WITH`语句来实现递归查询的方法,适用于多种数据库系统,如MySQL、PostgreSQL、SQL Server等。 一、理解递归查询 递归查询是一种在数据库中遍历层级...
在数据库管理领域,DB2和Oracle都是广泛应用的关系型数据库系统,它们都支持对树形结构数据的处理。...在实际工作中,我们需要根据具体需求和数据库特性,灵活运用这些递归查询方法,实现高效的数据操作。
MYSQL中递归查询的例子(使用NOT EXISTS): ```sql SELECT * FROM tablename AS t WHERE NOT EXISTS ( SELECT 'X' FROM tablename AS t1, tablename AS t2 WHERE t1.id = t2.parentid AND t1.id = t.id ); ``` ...
总之,Oracle SQL递归查询是一种解决层级数据问题的有效方法,通过`START WITH`和`CONNECT BY PRIOR`的配合,我们可以方便地遍历和检索层级结构中的数据。在设计和执行这类查询时,理解数据关系并合理调整查询策略,...
DB2递归实现使用逐层递归(广度优先)方法,而Oracle递归实现使用深度优先方法。 在本文中,我们将使用一个实用的例子来描述如何将CONNECT BY和相关的伪列映射到DB2递归。我们将定义和填充一个雇员表,然后使用递归...
Oracle 11GR2的递归WITH子查询是一种强大的功能,它允许你在SQL查询中创建递归关系,处理层级数据,比如组织结构、家族树或依赖关系等。WITH子查询,也称为公共表表达式(CTE),是SQL标准的一部分,自9i版本开始被...
### 使用 OVER 函数实现递归汇总计算 #### Oracle 分析函数概述 自 Oracle 8.1.6 版本起,Oracle 数据库引入了分析函数(Analytic Functions),这是一种非常强大的工具,主要用于处理复杂的查询需求,尤其是在...
在Oracle数据库中,可以使用`CONNECT BY`语句实现递归查询。例子中展示了如何通过`CONNECT BY`从`um_organization`表中查找特定`orgid`的上级和下级组织,以及生成整个组织结构树。`START WITH`指定递归的起始条件,...
Oracle提供了多种方法来处理这种查询,包括自连接、递归子查询以及层次查询(CONNECT BY)。 一、自连接 自连接是一种通过数据库表自身进行连接的方法,适用于处理层级关系。假设我们有一个名为`DEPARTMENT`的表,...
在 PostgreSQL 中,没有像 Oracle 那样的 `connect by` 扩展语法,但可以通过使用 `WITH RECURSIVE` 子句来实现递归查询。这是一个用于执行递归查询的关键字,允许在查询中引用查询本身,从而实现层次遍历。 下面是...
掌握层次查询的基本知识、语法和使用方法对于数据库管理员和开发人员来说至关重要,这不仅能够提升程序在执行查询操作时的效率,同时也能够更加精准地管理和展示层级信息。在实际的数据库应用中,合理运用层次查询...
在SQL语句中使用/*+parallel(t,4)*/提示可以让Oracle在执行查询时使用并行处理,这里的数字4表示使用4个并行线程。在处理大型数据表时,这可以显著提高查询性能。 14. CRAS和CREATE INSERT的性能测试 CRAS是创建表...
本压缩包文件"oracle常用函数.rar"包含了一些关于Oracle数据库的重要知识点,主要包括“connect by”用法、SQL优化以及分页查询的方法。下面我们将逐一探讨这些主题。 首先,`CONNECT BY`是Oracle SQL中用于构建...
10.3 递归子查询 273 10.3.1 一个CONNECT BY的例子 274 10.3.2 使用RSF的例子 275 10.3.3 RSF的限制条件 276 10.3.4 与CONNECT BY的不同点 276 10.4 复制CONNECT BY的功能 277 10.4.1 LEVEL伪列 278 10.4.2 ...
层次查询通过START WITH和CONNECT BY可以直观地展示层级关系,而WITH函数则为复杂的递归查询提供了便利,两者结合使用,可以解决各种层次数据的查询需求。在实际的数据库管理和开发工作中,熟练掌握这些技巧,能显著...
Oracle数据库系统支持对树状结构数据的查询,这种查询方式主要通过`START WITH`和`CONNECT BY`子句实现。这两个子句是Oracle特有的,用于处理层级关系的数据,例如组织结构、产品分类或者树形菜单等。理解并掌握这两...
《Pro Oracle SQL》第10章"Subquery Factoring"深入探讨了这一主题,尤其是10.1节“Standard Usage”部分,讲解了子查询在实际应用中的常见用法。在本章节中,作者可能详细阐述了如何利用子查询来优化SQL语句,提高...