在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系。其命令格式如下:

SELECT * from

CONNECT BY {PRIOR列名1=列名2|列名1=PRIOR列名2}

[START WITH]

其中:CONNECT BY子句说明每行数据将是按层次顺序检索,并规定将表中的数据连入树型结构的关系中。PRIORY运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,PRIOR运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上。在连接关系中,除了可以使用列名外,还允许使用列表达式。START WITH子句为可选项,用来标识哪个节点作为查找树型结构的根节点。若该子句被省略,则表示所有满足查询条件的行作为根节点。

Start with...Connect By子句递归查询一般用于一个表维护树形结构的应用。

创建示例表:

CREATE TABLE TBL_TEST

(

 
ID   
NUMBER,

  NAME 
VARCHAR2(100 BYTE),

 
PID  
NUMBER                                 
DEFAULT 0

);

 

插入测试数据:

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('1','10','0');

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('2','11','1');

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('3','20','0');

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('4','12','1');

INSERT INTO TBL_TEST(ID,NAME,PID) VALUES('5','121','2');

 

从Root往树末梢递归

select * from TBL_TEST

 start with id=1

 connect by prior id = pid

 order by pid

 

从末梢往树ROOT递归

select * from TBL_TEST

 start with id=5

 connect by prior pid = id

 order by id

-------------------------------------------------------------------------------------

SELECT
d.*       
-- 查询所有的来源数据

     
FROM vw_gfm_quota_detail d

START WITH d.detail_id = 7608

CONNECT BY PRIOR d.from_quota_id = d.to_quota_id

          
AND PRIOR d.BILL_TYPE_ID <>
d.BILL_TYPE_ID

UNION

    SELECT
d.*       
-- 查询所有的去向数据

     
FROM vw_gfm_quota_detail d

START WITH d.detail_id = 7608

CONNECT BY PRIOR d.to_quota_id = d.from_quota_id

          
AND PRIOR d.BILL_TYPE_ID <>
d.BILL_TYPE_ID;

最新文章

  1. Android课程---序列化与反序列化(转)
  2. Server Tomcat v7.0 Server at localhost failed to start.临时解决办法
  3. nodemanager execute container fail many times
  4. little alchemy攻略
  5. jsp 变量和方法的声明 Java程序片 HTML注释 JSP注释
  6. mysql import data slow solution---overview information
  7. struts2总结六: Struts2的拦截器
  8. python 调用函数
  9. 【转】Android LCD(四):LCD驱动调试篇
  10. Web前端 web的学习之路
  11. linux基础之CentOS7新特性
  12. CTO 技能图谱
  13. hbase-读操作
  14. tomcat7 内存溢出 java.lang.OutOfMemoryError 处理方法
  15. 性能测试工具 Web Service 性能测试工具比较
  16. [Ubuntu] 关于使用 root 账号登录
  17. mini Linux制作过程(25/01)
  18. 加密算法之AES算法(转)
  19. centos 6.5安装docker
  20. JS 中的布尔运算符 &amp;&amp; 和 ||

热门文章

  1. 浅析py-faster-rcnn中不同版本caffe的安装及其对应不同版本cudnn的解决方案
  2. &quot;mkimage&quot; command not found - U-Boot images will not be built
  3. Datatable常用系列一
  4. js toString()
  5. git基本配置
  6. Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
  7. 全国城市三级联动 html+js
  8. GPT WIN 换硬盘 硬盘克隆或复制 无法确定的问题,硬盘大小不一致换系统。
  9. BlogEngine2.9模仿yahoo滚动新闻Widget
  10. Qt 工程 pro文件