Oracle中针对层次数据所设计的专用SQL查询语句
假设有组织数据表orgstdstruct,其中包含UNITID,PUNITID,UNITNAME等字段,其中PUNITID是本表UNITID字段的外键,那么在ORACLE中可以通过以下语句直接查询出具有层次关系的数据,使用起来非常方便。
select level,unitid,punitid,unitname from orgstdstruct
start with punitid is null
connect by prior unitid = punitid
语法结构如下:
SELECT [LEVEL],column,expr...
FROM table
[WHERE condition(s)]
[START WITH condition(s)]
[CONNECT BY PRIOR condition(s)];
其中LEVEL字段是可选的,表示查询出来的数据层级
在Oracle 10g中,增加了一个新函数,叫做CONNECT_BY_ISLEAF,如果行的值为0表示非叶子节点,1表示叶子节点,示例如下:
select level,unitid,punitid,unitname,
(case when connect_by_isleaf=1 then '叶子' else '不是叶子' end) isleaf
from orgstdstruct
start with punitid is null
connect by prior unitid = punitid
另外,Oracle 10g还提供了CONNECT_BY_ISCYCLE和NOCYCLE关键字来解决循环问题,示例如下:
select level,connect_by_iscycle,unitid,punitid,unitname from orgstdstruct
start with punitid is null
connect by nocycly prior unitid = punitid
这样可以避免循环参加查询操作,并且通过CONNECT_BY_ISCYCLY得到哪个节点发生循环,0表示未循环,1表示循环
遗憾的是这种语法目前SQLServer还未支持,也不是标准的T-SQL语法。
转载于:https://www.cnblogs.com/minbear/archive/2009/01/22/1379916.html
Oracle中针对层次数据所设计的专用SQL查询语句相关推荐
- oracle中导入dmp数据注意事项
1.在oracle中导入dmp数据的时候,一般使用exp导出的是带有表结构的数据,这时候导入数据库,如果数据库中有这个表,就会报错,说已经存在这个表,无法创建,这时候imp导入语句中需要加入一句ign ...
- oracle分页数据,在Oracle中得到分页数据
在Oracle中得到分页数据 得到DataSet的值 例子如下: /// /// 得到Colletion分页数据 /// public DataSet GetList(int PageIndex, i ...
- oracle自动释放表空间,Oracle中关于清除数据和释放表空间
一.表的重命名 flashback table test2 to before drop rename to test3;--[to test3]将表重命名 drop table test3 purg ...
- 从Mysql某一表中随机读取n条数据的SQL查询语句
若要在i ≤ R ≤ j 这个范围得到一个随机整数R ,需要用到表达式 FLOOR(i + RAND() * (j – i + 1)).例如, 若要在7 到 12 的范围(包括7和12)内得到一个随机 ...
- /*1. 查询SC表中的全部数据。*/ SELECT * FROM SC /*2. 查询计算机系学生的姓名和年龄。*/ SELECT Sname,Sex FROM Student WHERE Sd
1. 查询SC表中的全部数据. SELECT * FROM SC 2. 查询计算机系学生的姓名和年龄. SELECT Sname,Sex FROM Student WHERE Sdept='计算机 ...
- Oracle中如何查找未使用绑定变量的SQL语句?
Oracle中如何查找未使用绑定变量的SQL语句? 利用V$SQL 视图的 FORCE_MATCHING_SIGNATURE 字段可以识别可能从绑定变量或 CURSOR_SHARING 获益的 SQL ...
- 【DB笔试面试617】在Oracle中,和“表达式和条件评估”相关的查询转换有哪些?...
♣题目 部分 在Oracle中,和"表达式和条件评估"相关的查询转换有哪些? ♣答案部分 (一)逻辑转换 1LHR@orclasm > SELECT /*+FULL(A) F ...
- Oracle数据库表,数据量很少,但是查询很慢
Oracle数据库表,数据量很少,但是查询很慢 1.起因 1.1.原因排查 1.2.原因分析 2.解决方式 2.1.删表重建这张表(95%解决一切问题) 2.2.建索引(目前用的) 1.起因 一开始是 ...
- php 中 sql 查询语句怎么写,sql查询语句有哪些
sql查询语句:1.查看表结构[SQL>DESC emp]:2.查询所有列[SQL>SELECT * FROM emp]:3.查询指定列:4.查询指定行:5.使用算术表达式:6.使用逻辑操 ...
最新文章
- python快速编程入门课后题答案-python语言程序设计基础(嵩天)第四章课后习题部分答案...
- 利用 NGINX 最大化 Python 性能,第二部分:负载均衡和监控
- Eclipse——热键amp;Help
- 测试题的答案(技术博客)
- 红橙Darren视频笔记 view的绘制流程(上) onMeasure测量代码分析 基于API27
- 我的docker随笔36:定制jenkins镜像
- P2479 [SDOI2010]捉迷藏
- 2019,燃烧的中国开源年
- app下载获取邀请码php,PHP根据id生成邀请码
- 云计算发展趋势-华为HCIA云计算学习笔记六
- Microsoft Store转圈圈
- 如何恢复手动删除的微信聊天记录?2个简单高效方法推荐
- 1898: [Zjoi2005]Swamp 沼泽鳄鱼
- springboot项目搭建0050-整合通用mapper
- 异常检测——5月(task1)
- HTML怎么像是下划线、穿越文字的横线以及上划线
- 最短路径—— Til the Cows Come Home
- Z-score 与 Fisher-Z 的区别
- 数据仓库之【用户行为数仓】12:【dws层:数据汇总层】【appc层:数据应用层】需求5:操作系统活跃用户相关指标
- 【智能制造】浅谈中国工业4.0的发展方向
热门文章
- P1426 小鱼会有危险吗
- VoLTE 有什么好处
- 丁克是什么意思,丁克家庭是什么意思,丁克家庭为什么越来越多
- 扎的多音字组词有哪些
- 为什么家里电信宽带不能用路由器了?
- Even better, if you don’t want to answer and
- 区块链优秀github开源项目
- php 设为首页 收藏_如何在网站上添加“设为首页”“加入收藏”
- SQL Server查询存储–概述
- modify sql_在SQL Server中使用JSON_MODIFY()修改JSON数据