- 浏览: 895957 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (687)
- java (127)
- servlet (38)
- struts (16)
- spring (22)
- hibernate (40)
- javascript (58)
- jquery (18)
- tomcat (51)
- 设计模式 (6)
- EJB (13)
- jsp (3)
- oracle (29)
- RUP (2)
- ajax (3)
- java内存管理 (4)
- java线程 (12)
- socket (13)
- path (5)
- XML (10)
- swing (2)
- UML (1)
- JBPM (2)
- 开发笔记 (45)
- Note参考 (15)
- JAXB (4)
- Quartz (2)
- 乱码 (2)
- CSS (2)
- Exception (4)
- Tools (7)
- sqlserver (3)
- DWR (7)
- Struts2 (47)
- WebService (2)
- 问题解决收藏 (7)
- JBOSS (7)
- cache (10)
- easyUI (19)
- jQuery Plugin (11)
- FreeMarker (6)
- Eclipse (2)
- Compass (2)
- JPA (1)
- WebLogic (1)
- powerdesigner (1)
- mybatis (1)
最新评论
-
bugyun:
受教了,谢谢
java 正则表达式 过滤html标签 -
xiongxingxing_123:
学习了,感谢了
java 正则表达式 过滤html标签 -
wanmeinange:
那如果无状态的。对同一个任务并发控制怎么做?比如继承Quart ...
quartz中参数misfireThreshold的详解 -
fanjieshanghai:
...
XPath 元素及属性查找 -
tianhandigeng:
还是没明白
quartz中参数misfireThreshold的详解
今天发现在oracle中的select语句可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是:
select ... from tablename start with cond1
connect by cond2
where cond3;
简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段:
id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。
用上述语法的查询可以取得这棵树的所有记录。
其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,实际就是多棵树。
COND2是连接条件,其中用PRIOR表示上一条记录,比如 CONNECT BY PRIOR ID=PRAENTID就是说上一条记录的ID是本条记录的PRAENTID,即本记录的父亲是上一条记录。
COND3是过滤条件,用于对返回的所有记录进行过滤。
对于oracle进行简单树查询(递归查询)
DEPTID | PAREDEPTID | NAME |
NUMBER | NUMBER | CHAR (40 Byte) |
部门id | 父部门id(所属部门id) | 部门名称 |
通过子节点向根节点追朔.
Sql代码
select * from persons.dept start with deptid=76 connect by prior paredeptid=deptid
通过根节点遍历子节点.
Sql代码
- select * from persons.dept start with paredeptid=0 connect by prior deptid=paredeptid
可通过level 关键字查询所在层次.
Sql代码
- select a.*,level from persons.dept a start with paredeptid=0 connect by prior deptid=paredeptid
再次复习一下:start with ...connect by 的用法, start with 后面所跟的就是就是递归的种子。
递归的种子也就是递归开始的地方 connect by 后面的"prior" 如果缺省:则只能查询到符合条件的起始行,并不进行递归查询;
connect by prior 后面所放的字段是有关系的,它指明了查询的方向。
练习: 通过子节点获得顶节点
- select FIRST_VALUE(deptid) OVER (ORDER BY LEVEL DESC ROWS UNBOUNDED PRECEDING) AS firstdeptid from persons.dept start with deptid=76 connect by prior paredeptid=deptid
- 出处:http://sunsja.iteye.com/blog/192143
发表评论
文章已被作者锁定,不允许评论。
-
在Oracle查询语句中怎样手动指定索引
2011-09-16 01:08 1254select /*+ index(tablename inde ... -
数据库范式(1NF 2NF 3NF BCNF)详解一
2011-08-28 13:35 4572数据库的设计范式是数据库设计所需要满足的规范,满足这些规范的数 ... -
数据库范式(1NF 2NF 3NF BCNF)详解二
2011-08-28 13:32 1354范式应用 我们来逐步搞定一个论坛的数据库,有如下信息: ... -
ORACLE数据库TM(表级)锁小结
2011-08-24 14:32 2227SQL语句 表锁模 ... -
Oracle中NVARCHAR2和VARCHAR2的区别
2011-05-20 10:16 2870Oracle中NVARCHAR2和VARCHAR2的区别 【 ... -
Oracle中connect by prior用法
2011-03-08 17:18 901connect by prior 是结构化 ... -
【总结】oracle恢复误删除数据,解除锁定的等sql语句
2011-03-08 16:55 1099转载请注明出处:http://renjie120.iteye. ... -
授予oracle导入用户表权限
2010-12-13 15:38 1099给用户增加导入数据权 ... -
如何写批处理文件自动将数据导入oracle数据库
2010-12-13 14:30 3308Oracle数据库的自动导入 ... -
如何使用PLSQL Developer从oracle数据库 导入导出数据
2010-12-13 14:26 4126如何使用PLSQL Developer从oracle数据库 导 ... -
oracle内存优化
2010-12-01 21:54 980内存2G的优化策略。 SGA最大大小:1300 -
让sql语句不排序,按照in语句的顺序返回结果
2010-12-01 21:47 1755oracle写法: Select * from we ... -
拯救oracle刚被误删的数据
2010-12-01 21:43 11012.误删除所有记录并且提交更改。SQL>delete f ... -
强制停止oracle正在执行的job
2010-12-01 21:40 1990一:温柔的方法:1、查看所有job;select * from ... -
oracle中connect by prior实现递归查询
2010-12-01 14:15 1169收集的几条在oracle中通过connect by prior ... -
oracle高级查询实例,提升效率
2010-12-01 13:57 963使用Oracle特有的查询语法, 可以达到事半功倍的效果。 ... -
oracle DBA必需掌握的常用命令集锦
2010-12-01 13:39 997第一章:日志管理 1.forcing log swit ... -
Oracle性能优化技巧
2010-12-01 12:21 781今天没事来说说oracle性能优化的技巧。。 1.选用适合的 ... -
alce表空间使用情况查询
2010-12-01 12:16 8721.查询oracle表空间的使用情况 select b.f ... -
几条有用sql
2010-12-01 12:14 620查找数据库中所有字段 以对应的表 select C.colu ...
相关推荐
Oracle树形结构查询,层次查询,hierarchical retrieval Oracle中的树形结构查询,也被称为层次查询或hierarchical retrieval,是一种获取树形结构数据的方法。这种方法可以将数据组织成树形结构,具有层次关系的...
层次查询的概念 层次查询的语法 基本层次查询 层次查询的增强特性 CONNECT BY特殊用法示例
《C++英文材料词汇难度层次查询系统》源代码解析与应用 C++是一种广泛应用的编程语言,尤其在系统软件、嵌入式系统、游戏开发等领域有着广泛的用途。本项目——"C++英文材料词汇难度层次查询系统",是基于C++实现的...
### Oracle 实战SQL层次查询详解 #### 一、层次查询概念 层次查询,也被称为树型结构查询,是在SQL中最常见的功能之一。这种查询方式主要用于处理具有层级结构的数据,例如组织架构、产品分类等场景。在Oracle...
SqlServer树形结构、层次查询 结果如下: 1 1 2 1-2 4 1-2-4 5 1-2-5 10 1-2-5-10 8 1-2-5-8 6 1-2-6 3 1-3 7 1-3-7 11 1-3-7-11 9 1-3-7-9 12 1-3-7-9-12 13 1-3-7-9-13 14 1-3-7-9-14
在Oracle数据库中,SQL开发是核心技能之一,尤其在处理复杂的数据关系时,层次查询(Hierarchical Queries)显得尤为重要。本教程的第10章专门介绍了这一主题,旨在帮助学员理解并掌握如何在数据中构建树型结构的...
Oracle数据库是一种广泛使用的商业关系型数据库管理系统,其层次查询功能主要基于树形结构来处理层级数据,这种结构被广泛用于表示具有层级关系的数据,如人事组织结构、公司组织架构以及计算机目录结构等。层次查询...
Oracle层次查询功能是Oracle数据库系统中的一个重要特性,它在关系型数据库管理中为处理具有层级关系的数据提供了便利。本文主要探讨了如何利用Oracle的层次查询功能处理和展示类似树形结构的数据。 首先,层次结构...
Oracle数据库中的层次查询(Hierarchical Queries)是一种强大的功能,它扩展了标准SQL语言,使得能够高效地处理具有层级关系的数据。这种查询方式尤其适用于处理树形结构的数据,例如组织架构、文件目录等。 首先...
### 内部编码与层次查询测试分析:深入探讨与比较 #### 1. 内部编码法:一种高效的树形结构处理方式 内部编码法,作为处理树形结构的一种手段,其核心在于通过预定义的编码规则来表示节点之间的层级关系。在本案例...
在SQL Server中,进行父子层次查询是数据库管理中常见的需求,尤其在组织结构、部门层级或者树状数据模型中。本文件"sqlserver父子层次查询.pdf"主要探讨了如何使用递归公共表表达式(Recursive Common Table ...
### Oracle层次查询详解 在Oracle数据库中,处理具有层次结构的数据是一项常见的需求,尤其是在企业管理、财务分析、组织架构展示等领域。Oracle提供了强大的`CONNECT BY`子句,它能够有效地进行层次查询,帮助用户...
递归层次查询(父子查询)在 MySQL 中的实现 在 MySQL 中,实现递归层次查询(父子查询)是一种复杂的操作,特别是当我们需要查询某个节点下的所有节点或节点上的所有父节点时。 Oracle 中有 Hierarchical Queries ...
通过本章学习,学员应达到如下目标: 解释层次查询的概念; 创建一个树型结构的报告; 格式化分级数据; 从树型结构中去除分支;
Oracle SELECT语句中的START WITH和CONNECT BY子句自动阻断一个层次。缺少这项特性,就需要一个复杂的自联接来确定行之间的逻辑联系。START WITH子句指定被...本文将为大家介绍如何在Oracle层次查询中给SIBLINGS排序。
高级sql关于层次查询更新 对于层次查询需要掌握: 1.解释层次查询的基本概念,识别需求中需要用到层次查询的能力。 2.建立和格式化一个树形报表(tree report)。 3.修剪树形结构的节点(node)和枝(branches)。
Oracle数据库在处理层次数据时,提供了强大的查询能力,其中就包括层次查询(Hierarchical Query)和WITH函数。这两种方法在处理具有层级结构的数据,如组织结构、产品分类、树状菜单等场景时尤为有用。 首先,我们...
本章主要探讨三个核心主题:日期和时间处理、层次查询以及分析查询,这些都是Oracle Database 10g系统中重要的特性。 首先,日期和时间处理在分布式数据库环境中尤为重要,因为全球各地的时间差异可能会影响数据的...
通过视频的方式详细叙述Oracle 11g中包,层次化查询和触发器的用法