oracle树结构查询(start with connect by prior )
来源:互联网 发布:软件项目立项建议书 编辑:程序博客网 时间:2024/05/17 14:18
层次化查询,即树型结构查询,是SQL中经常用到的功能之一,通常由根节点,父节点,子节点,叶节点组成,其语法如下:
SELECT [LEVEL] ,column,expression,...
FROM table_name
[WHERE where_clause]
[[START WITH start_condition] [CONNECT BY PRIOR prior_condition]];
LEVEL:为伪列,用于表示树的层次
start_condition:层次化查询的起始条件(empno = 7839)
prior_condition:定义父节点和子节点之间的关系(empno = mgr标示父节点也就是当前节点的empno = 子节点的mgr)
eg:
SQL> select empno,mgr,ename,job from emp start with empno = 7839 connect by prior empno = mgr;
树型结构遍历过程(通过上面的查询来描述)
1).start with开始,查询符合条件的所有数据记录为根节点。如上例中empno = 7839 的所有数据为跟节点
2).遍历根据当前节点,数据以connect by prior后面的数据进行判断,“=”左边的为当前节点的字段数据,右边的为所有字段数据。
3).查询符合条件,则判断该节点含有子节点并转到2);未查询到则该节点不含子节点,调回到该节点的父节点,转到2)操作。
整个遍历过程可以看做是一个递归调用。就想java的递归调用函数:
void DG(int a){
int t = 节点数(..a..);
if(t==0){
return;
}
for(int i = 0; i < t; i++){
---
DG(x);
}
}
注意:相关异常 ORA-01436: CONNECT BY loop(环,圈) in user data 。也就是所拥护数据含有死循环数据。
table a;
eg: id parentid
1 2
2 1
select * from a start with id = 1 connect by prior parentid= id; 这就是个死循环。
eg:id parentid
1 1
select * from a start with id = 1 connect by prior id = parentid; 这就是个死循环。
ORACLE递归
start with 要传入做为跟往下取的 ID
connect by prior 后面的内容为往下递归的条件
where 过滤条件放到start with 之前
select t.jgid_pk,t.sjjgid_fk,t.sjjgname
from xt_zzjg_jg t start with t.sjjgid_fk='001021'
connect by prior t.jgid_pk=t.sjjgid_fk;
0 0
- oracle树结构查询(start with connect by prior )
- ORACLE查询树型关系(connect by prior start with)
- ORACLE树查询,start with connect by prior
- ORACLE树查询,start with ... connect by prior ...
- ORACLE树查询,start with connect by prior
- ORACLE查询树型关系(connect by prior start with) .
- ORACLE查询树型关系(connect by prior start with)
- Oracle实现树查询:select ... start with ... connect by prior
- Oracle start with connect by prior 用法(递归查询树形结构)
- Oracle 遍历树 start with () connect by prior ()
- oracle树操作(select .. start with .. connect by .. prior)
- [层次结构|树状结构] oracle中用start with...connect by prior子句实现递归查询
- ORACLE查询树型关系(connect by prior start with)
- ORACLE查询树型关系(connect by prior start with)
- ORACLE查询树型关系(start with connect by prior)
- ORACLE查询树型关系(connect by prior start with)
- 【转】ORACLE查询树型关系(start with connect by prior)
- ORACLE查询树型关系(connect by prior start with)
- 解决 avformat_alloc_context无法识别的问题
- C++中的友元
- Android 用adb 添加文件
- Ural 1437. Gasoline Station
- 正则表达式的一个教训
- oracle树结构查询(start with connect by prior )
- TFS2012常见问题及解答
- 黑马程序员_银行业务调度系统
- Unity3D占用内存太大的解决方法
- 恒等运算符
- Java垃圾收集器
- Mysql初始化root密码
- Sublime text 2安装Package control插件
- 基于SpringSecurity3.x, JasperReport5.x等技术实现仿金蝶权限管理的企业信息管理系统