oracle中的递归查询
2017-03-14 14:08
246 查看
oracle 中在有层级关系的表中,往往会用到递归查询查表数据之间的关系。
递归查询中目前得知的有两种,一种是:
1. select * from table_name
start with 起始条件 where *** ------起始节点
connect by prior ***= *** -------递归条件
2. WITHT(storage_id,storage_name,parent_storage_id,storage_level,path,
top_manager) AS ( ---- 结构写出来
SELECT storage_id,storage_name, parent_storage_id,
storage_level,'\' || storage_name -- 路径拼接 ,
storage_name AS top_manager ---- 原来的CONNECT_BY_ROOT FROM
table_name WHERE parent_storage_id = 'J001' ---- 原来的START WITH条件
UNION ALL ---- 下面是递归部分
SELECT e.storage_id,e.storage_name, e.parent_storage_id, e.storage_level,
t.path || '\' || e.storage_name, ---- 把新的一截路径拼上去
t.top_manager ---- 根节点只有一个
FROM t, table_name e ---- 典型写法,把子查询本身和要遍历的表作一个连接
WHERE t.storage_id = e.parent_storage_id ---- 原来的CONNECT BY条件
) ---- WITH定义结束
SELECT * FROM T
第二种方法是在oracle 11 之后新增加的,第二种相对较灵活,查询效率待证!
递归查询中目前得知的有两种,一种是:
1. select * from table_name
start with 起始条件 where *** ------起始节点
connect by prior ***= *** -------递归条件
2. WITHT(storage_id,storage_name,parent_storage_id,storage_level,path,
top_manager) AS ( ---- 结构写出来
SELECT storage_id,storage_name, parent_storage_id,
storage_level,'\' || storage_name -- 路径拼接 ,
storage_name AS top_manager ---- 原来的CONNECT_BY_ROOT FROM
table_name WHERE parent_storage_id = 'J001' ---- 原来的START WITH条件
UNION ALL ---- 下面是递归部分
SELECT e.storage_id,e.storage_name, e.parent_storage_id, e.storage_level,
t.path || '\' || e.storage_name, ---- 把新的一截路径拼上去
t.top_manager ---- 根节点只有一个
FROM t, table_name e ---- 典型写法,把子查询本身和要遍历的表作一个连接
WHERE t.storage_id = e.parent_storage_id ---- 原来的CONNECT BY条件
) ---- WITH定义结束
SELECT * FROM T
第二种方法是在oracle 11 之后新增加的,第二种相对较灵活,查询效率待证!
相关文章推荐
- oracle 递归查询-个人总结
- Oracle实现递归查询
- oracle中进行简单树查询(递归查询) ,PRIOR、CONNECT_BY_ROOT的使用 .
- Oracle递归查询
- 在oracle中通过connect by prior来实现递归查询
- Oracle start with...connect by prior子句实现递归查询
- Oracle实现递归查询
- oracle 中的递归查询
- ORACLE中使用递归查询
- Oracle递归查询示例分析
- 在oracle中通过connect by prior来实现递归查询!
- Oracle递归查询
- oracle中connect by prior实现递归查询
- oracle中sql的递归查询运用
- ORACLE进阶(十)start with connect by 实现递归查询
- Oracle中的递归查询
- oracle之子查询、连接查询、递归查询
- oracle递归查询,修改及删除父子关系
- oracle递归查询
- Oracle递归查询 Start with…Connect By用法