Oracle Connect By Prior用法

简介:

oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:

  select ... from <TableName>

  where <Conditional-1>

  start with <Conditional-2>

  connect by <Conditional-3>

  ;

  <Conditional-1>:过滤条件,用于对返回的所有记录进行过滤。

  <Conditional-2>:查询结果重起始根结点的限定条件。

  <Conditional-3>:连接条件

  数据组织结构如下图:


a class=


数据库表结构如下:

  create table t2(

  root_id number,

  id number,

  name varchar(5),

  description varchar(10)

  );

  insert into t2(root_id,id,name,description) values(0,1,'a','aaa');

  insert into t2(root_id,id,name,description) values(1,2,'a1','aaa1');

  insert into t2(root_id,id,name,description) values(1,3,'a2','aaa2');

  insert into t2(root_id,id,name,description) values(0,4,'b','bbb');

  insert into t2(root_id,id,name,description) values(4,5,'b1','bbb1');

  insert into t2(root_id,id,name,description) values(4,6,'b2','bbb2');

  获取完整树:

  select * from t2 start with root_id = 0 connect by prior id = root_id;

Oracle Connect By Prior用法 - ekong - 仰天一笑泪光寒


    获取特定子树:select * from t2 start with id = 1 connect by prior id = root_id;

Oracle Connect By Prior用法 - ekong - 仰天一笑泪光寒


    select * from t2 start with id = 4 connect by prior id = root_id;

Oracle Connect By Prior用法 - ekong - 仰天一笑泪光寒



    如果connect by prior中的prior被省略,则查询将不进行深层递归。如:

    select * from t2 start with root_id = 0 connect by id = root_id;

Oracle Connect By Prior用法 - ekong - 仰天一笑泪光寒

    select * from t2 start with id = 1 connect by id = root_id;如:
Oracle Connect By Prior用法 - ekong - 仰天一笑泪光寒


本文转自einyboy博客园博客,原文链接:http://www.cnblogs.com/einyboy/archive/2012/08/01/2617939.html,如需转载请自行联系原作者。


目录
相关文章
|
1月前
|
Oracle 关系型数据库 数据库
Oracle中merge Into的用法
Oracle中merge Into的用法
|
存储 Oracle 关系型数据库
ORACLE:根据父id查询所有子孙数据,或者根据子id查询所有父数据(start with connect by prior)
一、需求: 我们在开发中经常遇到一种数据库表的设计:一个表中包含父子信息数据,也就是常说的树形数据. —> 最常见的例子就是省市区一体表,就是通过id、pid、level来进行控制,从而一张表来存储数据.我们进行拿数据的时候,不用再连表拿取,直接通过(start with connect by prior)直接便利就会得到数据.
541 2
ORACLE:根据父id查询所有子孙数据,或者根据子id查询所有父数据(start with connect by prior)
|
3月前
|
存储 数据采集 Oracle
oracle connect by很强,但是要慎用,不然有你哭的时候
oracle connect by很强,但是要慎用,不然有你哭的时候
56 0
|
8月前
|
Oracle 关系型数据库
Oracle中decode 以及ROW_NUMBER() OVER() 函数等其它相关函数用法
Oracle中decode 以及ROW_NUMBER() OVER() 函数等其它相关函数用法
77 0
|
6月前
|
Oracle 关系型数据库 数据安全/隐私保护
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 用户名/
Oracle 10g ORA-12154: TNS: could not resolve the connect identifier specified 问题解决! 我同事遇到的问题。 用户名/
|
7月前
|
SQL Oracle 关系型数据库
Oracle 中 Translate的用法
Oracle 中 Translate的用法
48 0
|
存储 Oracle 关系型数据库
Oracle行转列函数PRINT_TABLE的用法
Oracle行转列函数PRINT_TABLE的用法
91 0
|
存储 SQL Oracle
Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解
Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解
277 0
Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解
|
Oracle 关系型数据库
关于Oracle REGEXP_COUNT函数用法总结
关于Oracle REGEXP_COUNT函数用法总结
2341 0
|
Oracle 关系型数据库 数据库
Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解
本人CSDN博主 孤傲小二~阿沐,本文《Oracle的学习心得和知识总结(五)|Oracle数据库 Connect By 技术详解》来自于我在CSDN的同名文档