数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

HierarchicalqueryOracle分级查询


发布日期:2021年06月16日
 
HierarchicalqueryOracle分级查询

start with 子句用于规定分级结构中的根行

connect by 子句用于规定分级结构中父行与子行之间的关系

nocycle 参数用于指定oracle在分级结构存在回路的情况时依然返回结构行

在分级查询中在条件(指定父子关系)中的一个表达式(父或子)必须由prior操作符进行限定用来指定父子关系中的父

PRIOR expr = expr

or

expr = PRIOR expr

关于prior我个人的理解假设有关系 R(id pid)有如下数据

IDPID

select * from R start with id = connect by prior id = pid;

在这个查询中prior在列id前我们根据表中数据构建一个有向图从prior限定的列指向另外一列即id指向pid

那么这个查询的意义就是寻找图中哪些结点可以到达结点通过图我们可以看到结果应为以及自己

SQL查询的结果为

ID PID

rows selected

prior限定的列如果和子句start with规定的列相同表示哪些结点可以到达start with规定的列

prior限定的列如果和子句start with规定的列不同表示通过start with规定的列可以到达哪些结点

SYS_CONNECT_BY_PATH(columnchar)中的columu与prior限定的列相同时即表示路径

当分级结构中存在回路时可以配合查询伪列 level connect_by_isleaf connect_by_root等获得更多分级结构的信息

上一篇:关于JDBC客户端如何连接ORACLE数据库RAC的负载均衡

下一篇:Oracle备份与恢复案例一