在这个例子里面,关于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;
分享到:
相关推荐
在本主题中,我们将深入探讨如何利用递归SQL在Oracle中展示一棵树形结构,以及如何根据父ID遍历所有的子ID。 首先,让我们分析给出的SQL查询语句: 1. `start with id = #id#` 这是递归查询的起点,`#id#`是一个...
因此,通过模拟堆栈的原理,我们可以设计一条SQL语句,利用嵌套的JOIN或子查询来模拟迭代过程,逐步展开层次结构,从而实现递归查询的效果。 实现这样的SQL递归查询,通常需要以下步骤: 1. 初始化:定义起始条件,...
在Oracle中,你可以使用子查询来获取满足特定条件的数据,或者作为表的替代品。例如,你可以用子查询找出销售额最高的产品的ID,然后在主查询中根据这个ID查询相关销售数据。 二、连接查询 连接查询用于合并两个或...
3. **层次查询与递归**:在某些数据库系统中,如Oracle,可以使用CONNECT BY语句配合子查询来处理层级数据,例如查找组织结构的上下级关系。 4. **存在性子查询**:检查主查询的某行是否存在匹配子查询结果的行,...
优化方法包括但不限于:使用索引、避免全表扫描、减少子查询、使用JOIN替代子查询、适当使用绑定变量等。理解并应用这些技巧能够显著改善数据库性能。 "oracle函数.txt"文件涵盖了Oracle数据库中的一些常用函数。...
- **ROWNUM**:Oracle中的`ROWNUM`在DB2中无法直接使用,需要使用子查询结合行计数函数来实现类似功能。 - **FOR UPDATE**:Oracle中的`FOR UPDATE`在DB2中可以通过`WITH RS`或`FINAL TABLE`实现锁记录的功能。 -...
- **SQL Server:** SQL Server同样支持使用子查询进行更新操作,但在某些情况下可能需要重新编写子查询以适应SQL Server的语法。 ```sql UPDATE table_name SET column1 = (SELECT some_expr FROM some_table), ...
- 在Oracle和HANA中,都可以使用`START WITH...CONNECT BY PRIOR`来执行递归查询,以构建树形结构的数据集。例如,查询具有父子关系的部门结构。两者在语法上基本一致,但HANA不支持Oracle中的`level`和`siblings`...
#### 3.2 11g R2 WITH 新特性 Oracle 11g R2 引入了一些新的WITH子句功能,如递归查询等,增强了其灵活性和功能。 #### 3.3 WITH 对执行计划的影响 使用WITH子句可以帮助优化执行计划,尤其是在处理复杂查询时。...
- `CONNECT_BY_ROOT`:在层次查询中标识根节点。 9. 正则表达式函数: - `REGEXP_LIKE()`:使用正则表达式进行匹配。 - `REGEXP_REPLACE()`:使用正则表达式替换字符串。 10. 递归查询与分析函数: - `CONNECT...
`Connect By Prior`是Oracle数据库中的一个特殊查询语句,用于检索具有层次结构的数据。它允许你定义节点之间的父/子关系,并按层次顺序检索结果。例如: ```sql SELECT * FROM TBL_TEST START WITH id = 10 ...
11、select * from emp where empno > 10; --大于 过滤判断 12、select * from emp where empno <> 10 --不等于 过滤判断 13、select * from emp where ename > 'cba'; --字符串比较,实际上比较的是每个字符的...