Oracle中Start With的用法
Oracle Start With 关键字
1.问题描述
在主销售品目录模块查询目录节点下的销售品用到此关键字。使用此关键字能够解决层级结构的查询问题。
2. 基本语法
SELECT ... FROM + 表名WHERE + 条件3 START WITH + 条件1 CONNECT BY PRIOR + 条件2
描述:
条件1:
表示从哪个节点开始查找, 也就是通过条件1 查询到的数据, 作为后续查询的起始节点(参数).
当然可以放宽限定条件,如 ID in (‘00001’, ‘00011’)以取得多个根节点,也就是多棵树;在连接关系中,除了可以使用列明外,还允许使用列表达式。
如果省略Start With:
就默认把所有满足查询条件的Tree整个表中的数据从头到尾遍历一次,每一个数据做一次根,然后遍历树中其他节点信息.
条件2:
是连接条件,其中用PRIOR表示上一条记录,例如CONNECT BY PRIOR ID = PID,意思就是上一条记录的ID是本条记录的PID,即本记录的父亲是上一条记录。CONNECT BY子句说明每行数据将是按照层次顺序检索,并规定将表中的数据连入树形结构的关系中。
Prior 在父节点的一侧表示, 自底向上查, 在 子节点的一侧表示 自上向下查询;
条件3:
不能用在 Connect By 后, 这里的条件判断, 等价于 在最后查询出结果列表之后, 再进行条件筛选; 并非 删除掉 节点及子节点;
举例:
ID, DSC, PID;三个字段, 分别表示 当前标识的 ID(主键), DSC 当前标识的描述, PID 其父级ID, 比较典型的例子 是 国家, 省, 市 这种层级结构;
省份归属于国家, 因此 PID 为 国家的 ID, 以此类推;
--自上向下Select * From DEMOStart With ID = '00001'--用 Start Wiht PID = '-1' 结果不变 Connect By Prior ID = PID--结果 ID DSC PID00001 中国 -1 00011 陕西 0000100111 西安 0001100112 咸阳 00011 00113 延安 00011 00012 贵州 00001 00013 河南 00001
说明:
1.查出第一个条件为ID = '00001’的结果:00001 中国 -1
2.
Select * From DEMOWhere ID = PID :左边条件为第一步查出来的条件所以为:00001 =PID
所以结果为:00011 陕西 00001
3.循环1、2步直到查出所有
3.其他关键字
nocycle:消除数据本身不合理情况导致的循环。如:中国的ID与PID都为00001时将一直循环。
SIBLINGS: 关键字:它会保护层次,并且在每个等级中按expre排序。
例如:
Select ID, PID, DSC, connect_by_isleaf, LEVELFrom DEMOStart With ID = '00001' Connect By nocycle Prior ID = PIDORDER SIBLINGS By DSC
相关介绍链接:
https://blog.csdn.net/weiwenhp/article/details/8218091
https://www.cnblogs.com/zyzdisciple/p/7873584.html
Oracle中Start With的用法相关推荐
- oracle中的merge into用法解析
oracle中的merge into用法解析 merge into的形式 MERGE INTO [target-table] A USING [source-table sql] B ON([cond ...
- oracle中over()分析函数的用法
摘自: http://www.poluoluo.com/jzxy/201004/81921.html 百度文库也记载了oracle中over()分析函数的用法 在泡坛子的时候中无意中发现了这个函数,才 ...
- oracle中的to_number,Oracle中to_number()函数的用法
to_number()函数是oracle中常用的类型转换函数之一,是将一些处理过的按一定格式编排过的字符串变回数值型的格式. 1.to_number()函数可以将char或varchar2类型的str ...
- Oracle中to_char()函数的用法
Oracle中to_char()函数的用法 日期转换: to_char(date,'格式') select to_date('2005-01-01 ','yyyy-MM-dd') from dual; ...
- oracle to_char函数格式,oracle 中to_char函数的用法
一.日期格式转换 to_char(date,'格式'); select to_date('2005-01-01 ','yyyy-MM-dd') from dual; select to_char(sy ...
- Oracle中add_months()函数的用法
Oracle中add_months()函数的用法 查询当前时间n个月以前的时间: select add_months(sysdate,-n) from dual; 查询当前时间n个月之后的时间: se ...
- oracle中rollback用法,Oracle中SAVEPOINT和ROLLBACK用法
savepoint是事务内部允许部分rollback的标志符.因为事务中对记录做了修改,我们可以在事务中创建savepoint来标识不同的点.如果遇到错误,就可以rollback到不同的点或直接回来事 ...
- Oracle中游标Cursor基本用法详解
这篇文章主要介绍了Oracle中游标Cursor基本用法详解,还是比较全面的,具有一定参考价值,需要的朋友可以了解下. 查询 SELECT语句用于从数据库中查询数据,当在PL/SQL中使用SELECT ...
- oracle分类函数总结,oracle中分组排序函数用法
项目开发中,我们有时会碰到需要分组排序来解决问题的情况,如:1.要求取出按field1分组后,并在每组中按照field2排序:2.亦或更加要求取出1中已经分组排序好的前多少行的数据 这里通过一张表的示 ...
- Oracle中ROW_NUMBER() OVER()函数用法
Oracle中ROW_NUMBER() OVER()函数用法 1. 说明:ROW_NUMBER() OVER() 函数的作用:分组排序 2. 原理: row_number() over() 函数,ov ...
最新文章
- 在RHEL上实现OpeenSSH
- 订单最小量限制的增强
- 30+个必知的《人工智能》会议清单
- 常用计算机类型包括个人计算机,网络教育统考《计算机应用基础》多媒体技术模拟题(二)...
- 配置 docker0 网桥
- html5折叠卡片,基于HTML5折叠卡片式下拉菜单代码
- java shark_JAVA项目开发笔记(3)Shark部分: Shark API | 学步园
- Mask-Predict: Parallel Decoding of Conditional Masked Language Models
- 机器学习-样本集(包括训练集及测试集)的选取
- Linux Linux函数 Linux聊天程序 基于socket的TCP(有连接的)聊天程序
- Linux学习之旅(二)Linux文档操作
- android 15.6寸平板,关于HUAWEI 华为M6 10.8英寸平板的槽点,不吐不快
- Linux内核编程《一》
- java抽象类详细介绍
- 主流无线芯片厂商的自动信道选择算法小结
- vue之设置背景图片自适应屏幕
- 流程审批类系统数据库结构怎么定义
- 2、java的应用领域
- 项目实战!Python分析广州房地产市场,房价还会再涨吗?
- Matplotlib数据可视化高级