Start with connect by prior 递归查询
在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;
最新文章
- Android课程---序列化与反序列化(转)
- Server Tomcat v7.0 Server at localhost failed to start.临时解决办法
- nodemanager execute container fail many times
- little alchemy攻略
- jsp 变量和方法的声明 Java程序片 HTML注释 JSP注释
- mysql import data slow solution---overview information
- struts2总结六: Struts2的拦截器
- python 调用函数
- 【转】Android LCD(四):LCD驱动调试篇
- Web前端 web的学习之路
- linux基础之CentOS7新特性
- CTO 技能图谱
- hbase-读操作
- tomcat7 内存溢出 java.lang.OutOfMemoryError 处理方法
- 性能测试工具 Web Service 性能测试工具比较
- [Ubuntu] 关于使用 root 账号登录
- mini Linux制作过程(25/01)
- 加密算法之AES算法(转)
- centos 6.5安装docker
- JS 中的布尔运算符 &;&; 和 ||
热门文章
- 浅析py-faster-rcnn中不同版本caffe的安装及其对应不同版本cudnn的解决方案
- ";mkimage"; command not found - U-Boot images will not be built
- Datatable常用系列一
- js toString()
- git基本配置
- Mysql 常用 SQL 语句集锦 转载(https://gold.xitu.io/post/584e7b298d6d81005456eb53)
- 全国城市三级联动 html+js
- GPT WIN 换硬盘 硬盘克隆或复制 无法确定的问题,硬盘大小不一致换系统。
- BlogEngine2.9模仿yahoo滚动新闻Widget
- Qt 工程 pro文件