`
zzhonghe
  • 浏览: 248176 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

11g新特性 递归子查询 替代 Connect by

    博客分类:
  • DB
 
阅读更多
在这个例子里面,关于history的记录,每条记录都有一个prv_trx_history_id指向上一条的记录, 因此,可以采用递归的方式列出所有的History. (注,此处不用order by creation_date的原因是,可能同一时间可能会插入多条,这样就无法区分先后)


select his.customer_trx_id, his.transaction_history_id, his.prv_trx_history_id, his.status, his.event from ar_transaction_history_all his
where  his.customer_trx_id=300100004050089
start with his.prv_trx_history_id is null connect by prior his.transaction_history_id=his.prv_trx_history_id;

--------------

with his(customer_trx_id,transaction_history_id,prv_trx_history_id,status,event)
as (
  select customer_trx_id,transaction_history_id,prv_trx_history_id,status,event from ar_transaction_history_all where customer_trx_id=300100004050089 and prv_trx_history_id is null
  union all
  select t.customer_trx_id,t.transaction_history_id,t.prv_trx_history_id,t.status,t.event from ar_transaction_history_all t, his where t.customer_trx_id=300100004050089 and  t.prv_trx_history_id = his.transaction_history_id  and t.prv_trx_history_id is not null
)
select * from his;
分享到:
评论

相关推荐

    Oracle递归SQL学习

    在本主题中,我们将深入探讨如何利用递归SQL在Oracle中展示一棵树形结构,以及如何根据父ID遍历所有的子ID。 首先,让我们分析给出的SQL查询语句: 1. `start with id = #id#` 这是递归查询的起点,`#id#`是一个...

    一种MySQL数据库SQL递归查询的研究与实现.pdf

    因此,通过模拟堆栈的原理,我们可以设计一条SQL语句,利用嵌套的JOIN或子查询来模拟迭代过程,逐步展开层次结构,从而实现递归查询的效果。 实现这样的SQL递归查询,通常需要以下步骤: 1. 初始化:定义起始条件,...

    Oralce高级查询与资料

    在Oracle中,你可以使用子查询来获取满足特定条件的数据,或者作为表的替代品。例如,你可以用子查询找出销售额最高的产品的ID,然后在主查询中根据这个ID查询相关销售数据。 二、连接查询 连接查询用于合并两个或...

    SQL语句嵌套的实例.rar_SQL语句_sql 语句_sql嵌套

    3. **层次查询与递归**:在某些数据库系统中,如Oracle,可以使用CONNECT BY语句配合子查询来处理层级数据,例如查找组织结构的上下级关系。 4. **存在性子查询**:检查主查询的某行是否存在匹配子查询结果的行,...

    oracle常用函数.rar

    优化方法包括但不限于:使用索引、避免全表扫描、减少子查询、使用JOIN替代子查询、适当使用绑定变量等。理解并应用这些技巧能够显著改善数据库性能。 "oracle函数.txt"文件涵盖了Oracle数据库中的一些常用函数。...

    DB2兼容模式设置文档

    - **ROWNUM**:Oracle中的`ROWNUM`在DB2中无法直接使用,需要使用子查询结合行计数函数来实现类似功能。 - **FOR UPDATE**:Oracle中的`FOR UPDATE`在DB2中可以通过`WITH RS`或`FINAL TABLE`实现锁记录的功能。 -...

    ORACLE和SQL Server的语法区别

    - **SQL Server:** SQL Server同样支持使用子查询进行更新操作,但在某些情况下可能需要重新编写子查询以适应SQL Server的语法。 ```sql UPDATE table_name SET column1 = (SELECT some_expr FROM some_table), ...

    TN-HDB-0003-HANA SQL参考及Oracle对照-v0.6.docx

    - 在Oracle和HANA中,都可以使用`START WITH...CONNECT BY PRIOR`来执行递归查询,以构建树形结构的数据集。例如,查询具有父子关系的部门结构。两者在语法上基本一致,但HANA不支持Oracle中的`level`和`siblings`...

    高级SQL学习

    #### 3.2 11g R2 WITH 新特性 Oracle 11g R2 引入了一些新的WITH子句功能,如递归查询等,增强了其灵活性和功能。 #### 3.3 WITH 对执行计划的影响 使用WITH子句可以帮助优化执行计划,尤其是在处理复杂查询时。...

    ORACLE资料

    - `CONNECT_BY_ROOT`:在层次查询中标识根节点。 9. 正则表达式函数: - `REGEXP_LIKE()`:使用正则表达式进行匹配。 - `REGEXP_REPLACE()`:使用正则表达式替换字符串。 10. 递归查询与分析函数: - `CONNECT...

    总结问题集合

    `Connect By Prior`是Oracle数据库中的一个特殊查询语句,用于检索具有层次结构的数据。它允许你定义节点之间的父/子关系,并按层次顺序检索结果。例如: ```sql SELECT * FROM TBL_TEST START WITH id = 10 ...

    精髓Oralcle讲课笔记

    11、select * from emp where empno > 10; --大于 过滤判断 12、select * from emp where empno <> 10 --不等于 过滤判断 13、select * from emp where ename > 'cba'; --字符串比较,实际上比较的是每个字符的...

Global site tag (gtag.js) - Google Analytics