分类

链接

2012 年 5 月
 123456
78910111213
14151617181920
21222324252627
28293031  

近期文章

热门标签

新人福利,免费薅羊毛

现在位置:    首页 > Oracle > 正文
共享办公室出租
Oracle递归查询
Oracle 暂无评论 阅读(2,690)

    有的情况下,我们需要用递归的方法整理数据,这才程序中很容易做到,但是在数据库中,用SQL语句怎么实现?下面我以最典型的树形结构来说明下如何在Oracle使用递归查询。

start with connect by 层次查询(Hierarchical Queries)

image

从顶级向下级查询

Select  a.areaid,a.name,a.parentid,a.levelcode
From prnbsn_area a
Start With a.areaid = 3 Connect By Prior a.areaid=a.parentid

该查询会查出所有的重庆子级区域

image

从下向上查询

Select  a.areaid,a.name,a.parentid,a.levelcode
From prnbsn_area a
Start With a.areaid = 78
Connect By Prior a.parentid = a.areaid

image

查询三亚(78)的所有上级

 

start with: 表示根记录的条件(从那条记录开始)
connect by: 指定了父记录行和子记录行之间的关系,在层次查询中,条件表达式必须使用prior操作符来指定父记录行
如:
CONNECT BY PRIOR pid = id 或者CONNECT BY pid = PRIOR id
如果connect by 条件是一个组合条件,那么只有一个条件需要prior操作符,
如:
CONNECT BY last_name != 'King' AND PRIOR employee_id = manager_id

不过,connect by 不能包含子查询。
prior是一个二元操作符

============ 欢迎各位老板打赏~ ===========

本文版权归Bruce's Blog所有,转载引用请完整注明以下信息:
本文作者:Bruce
本文地址:Oracle递归查询 | Bruce's Blog

发表评论

留言无头像?