Oracle兼容之层次查询:层次查询高级特性分析
2008-09-04 12:50:44 来源:WEB开发网1.层次查询环的判断
1.1 环的出现
层次查询中的环指的是作为某一行数据祖先结点的行又作为该行的子结点出现的情况。下面,我们通过一个例子来说明层次查询中环的出现,建立如下数据:
createtablet1(parentint,valueint);
insertintot1values(1,2);
insertintot1values(2,3);
insertintot1values(2,4);
insertintot1values(3,5);
insertintot1values(3,6);
insertintot1values(5,2);
按照如下层次查询语句的连接条件,表t1的数据可以组成如图1的结构。
select*fromt1connectbypriorvalue=parentstartwithvalue=2;
图1 t1数据的层次结构
如图1所示,根据连接条件prior value = parent,作为(5,2)祖先结点的数据行(2,3)又作为其子结点出现,这样就形成了环;而(2,4)虽然与(2,3)同是(1,2)的子结点,但由于不是(5,2)的直接祖先,所以作为其子结点出现也并不能形成环。
利用上述层次查询语句进行查询,结果报错。
1.2 Oracle中判断环的标准分析
按照环的定义,逻辑上很容易进行环的判断,但是层次查询可以通过NOCYCLE关键字来屏蔽掉形成环的数据;CONNECT_BY_ISCYCLE伪列在当前行的祖先结点又出现在其子结点时返回1,所以我们需要进一步研究层次查询中形成环的标准。
下面通过NOCYCLE关键字和CONNECT_BY_ISCYCLE、LEVEL等伪列来研究Oracle层次查询出现环的判断。
对上一节表t1的数据,进行如下查询:
- ››oracle 恢复误删除的表和误更新的表
- ››Oracle分页查询排序数据重复问题
- ››Oracle创建dblink报错:ORA-01017、ORA-02063解决
- ››Oracle 提高SQL执行效率的方法
- ››Oracle 动态查询,EXECUTE IMMEDIATE select into...
- ››兼容IE6的纯CSS背景半透明文字不透明
- ››Oracle 11g必须开启的服务及服务详细介绍
- ››oracle性能34条优化技巧
- ››oracle数据库生成随机数的函数
- ››Oracle 数据库表空间容量调整脚本
- ››oracle单库彻底删除干净的方法
- ››Oracle创建表空间、创建用户以及授权、查看权限
更多精彩
赞助商链接