- 浏览: 370102 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (292)
- jbpm3.2 (4)
- hibernate (1)
- struts (2)
- spring (7)
- oracle (20)
- TCP/UDP (3)
- SpringSide (4)
- maven (4)
- eclipse插件 (11)
- 模板引擎 (2)
- javascript (4)
- 设计模式 (2)
- 工作中遇到异常及解决 (3)
- java文件编译问题 (1)
- ehcache应用 (1)
- java反射 (1)
- jbpm4 (1)
- Google-Gson (1)
- Jquery (6)
- XML (5)
- 工作记事 (2)
- flash builder 4 (1)
- Lucene (8)
- struts2 (1)
- AspectJ (1)
- spring proxool连接池配置 (1)
- StringUtils (1)
- spring security (5)
- JAVA点滴 (9)
- jbpm4.3 (1)
- ACL (0)
- 线程 (7)
- Java线程:新特征-线程池 (1)
- MemCache (5)
- compass (0)
- NIO (2)
- zookeeper (4)
- 并发 (2)
- redis (9)
- Nginx (5)
- jvm (1)
- 互联网 (24)
- shell (3)
- CAS (1)
- storm (4)
- 数据结构 (3)
- MYSQL (3)
- fsdfsdfsd (0)
- hadoop (19)
- hive (3)
- IntelliJ (3)
- python (3)
- 23423 (0)
- spark (7)
- netty (9)
- nmon (1)
- hbase (8)
- cassandra (28)
- kafka (2)
- haproxy (3)
- nodejs (3)
- ftp (1)
最新评论
-
记忆无泪:
遇到这个问题我用的sed -i 's/\r$//' /mnt/ ...
CentOS6 Shell脚本/bin/bash^M: bad interpreter错误解决方法 -
alenstudent:
Windows 下Nexus搭建Maven私服 -
dandongsoft:
lucene3+IK分词器 改造 lucene2.x+paoding -
duanyanrui:
学习了,支持
Google-Gson -
yscyfy:
这是你直接翻译过来的???
Google-Gson
详见com.ninetowns.ssh2Frame.userDataPerm.service.impl. UserDataPermManageImpl
connect by prior start with 经常会被用到一个表中存在递归关系的时候。比如我们经常会将一个比较复杂的目录树存储到一个表中。或者将一些部门存储到一个表中,而这些部门互相有隶属关系。这个时候你就会用到connect by prior start with。
典型的使用方法就是:
select * from table connect by prior cur_id=parent_id start with cur_id=???
例如:
a b
1 0
2 1
3 1
4 2
5 3
如果想查找a=2及其下面的所有数据,则:
select * from table connect by prior a=b start with a=2
a b
2 1
4 2
这些只是基础,皮毛。其实只要你灵活的构造查询语句。可以得出意想不到的结果。比如生成树每一个路径。
但是这些记录组成的树必须正常才可以。如果有互为父子的情况,就会出现循环错误!
select * from tb_cus_area_cde
--子取父
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_snr_area=a.c_area_cde START WITH a.c_area_cde='1040101'
--父取子
select * from tb_cus_area_cde a
CONNECT BY PRIOR a.c_area_cde=a.c_snr_area START WITH a.c_snr_area is null
注意:在用这个函数的时候,statement的参数要用 ResultSet.TYPE_SCROLL_INSENSITIVE 而不能用 ResultSet.TYPE_SCROLL_SENSITIVE,在这里再把这两个之间的区别讲讲:
1.TYPE_FORWORD_ONLY,只可向前滚动;
2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。
3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据
发表评论
-
查看及修改oracle编码格式方法
2011-10-25 13:30 955--查看oracle数据库字符集: select us ... -
oracle11g 空表导出
2011-10-21 15:08 738oracle11g的新特性,数据条数是0时不分配segment ... -
oracle远程导入导出
2011-09-13 13:43 641远程导出/导入 exp/imp 用户名/密码@ ... -
oracle创建表空间、用户、用户授权
2011-08-27 16:38 840ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存 ... -
触发器编写
2011-06-28 23:56 767以前项目中编写的触发器 create or repla ... -
自己曾经写的同步数据的存储过程
2011-06-28 23:53 1308------------------------------- ... -
JDBC调用函数和存储过程
2011-06-28 23:49 2007JDBC调用存储过程 (1) Connection con ... -
Oracle游标使用的经验总结
2011-06-28 23:47 989以下的文章主要是介绍Oracle游标使用,以下就是具体方案的描 ... -
oracle数组,游标,case查询
2011-06-28 23:45 1509create or replace procedure ttt ... -
oracle中SQL修改序列
2011-06-28 23:43 2037导入表数据时要修改表对应的序列值方法: declare ... -
oracle左连接的两种写法的差异
2011-06-28 23:42 1636有两个表T1和T2,两个表除了主键索引外均无其他索引,这两个表 ... -
Oracle左连接,右连接
2011-06-28 23:41 1544数据表的连接 有: 1、内连接(自然连接): 只有两个表相匹配 ... -
使用hibernate透明操作blob
2011-06-28 23:38 1319前言:Oracle的blob操作的复杂性我想很多人都见识过了, ... -
各种数据库使用JDBC连接的方式
2011-06-28 23:36 659下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使 ... -
oracle rownum和rowId
2011-06-28 23:34 946oracle rownum和rowId 精通 ... -
oracle2中分页语句
2011-06-28 23:33 492--第一种分页 rowidselect * from fee_ ... -
事物的隔离级别
2011-06-28 23:26 958事务的四个属性:原子性(atomicity)、一致性(cons ... -
无法分配 111620 字节的共享内存 ("shared pool","select tfi.ins_process_name
2011-06-24 17:43 1150无法分配 111620 字节的共享内存 ("shar ... -
oracle服务器配置文件路径
2011-05-16 11:36 1725oracle安装目录\Db_1\NETWORK\ADMIN ...
相关推荐
- **`CONNECT BY PRIOR`**:指定连接父节点和子节点的方式,即如何根据父子关系来构建树。 例如,在给定的部分内容中,有如下的 SQL 查询语句: ```sql SELECT * FROM t_xtgl_jcxx_district START WITH code IN ...
### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...
通过`CONNECT BY PRIOR`查询,我们可以获取整个组织架构,从根节点(如最高级别的部门)开始,递归地找出所有的子部门。 `LEVEL`关键字在处理树结构时也非常有用,它可以为每个节点分配一个层次级别,根节点的级别...
1. **自上而下的搜索方式**:使用`CONNECT BY PRIOR ID = PARENT_ID`表示先找父节点再找子节点。 2. **自下而上的搜索方式**:使用`CONNECT BY ID = PRIOR PARENT_ID`表示先找叶子节点再找父节点。 3. **过滤条件的...
从 Oracle 9i 开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到当前行内容以“path”或者层次元素列表的形式显示出来。 使用 START WITH 和 CONNECT BY 子句,可以 select 数据具有层次关系的数据,通常是...
- **CONNECT BY**:定义了节点之间的连接规则,通常用于描述父节点与子节点之间的关系。 - **WHERE**:用于进一步筛选查询结果。 #### 三、示例:构建树形结构 假设我们有一个组织机构表,其中包含`org_id`和`...
例如,你可以使用`CONNECT BY PRIOR ID = PARENT_ID AND LEVEL ,这将遍历到第五级的子节点。 4. **LEVEL伪列**: Oracle在`CONNECT BY`查询过程中自动提供了一个`LEVEL`伪列,它表示当前行在树结构中的深度,从1...
select 1 from 表格 start with … connect by prior id = pId start with:表示以什么为根节点,不加限制可以写1=1,要以id为123的节点为根节点,就写为start with id =123 connect by:connect by是必须的,...
例如,`CONNECT BY PRIOR org_id = parent_id`表明当前行的`org_id`应该等于前一行的`parent_id`,这样就按照父-子关系构建了整个树。 - `WHERE`子句则用于进一步筛选满足特定条件的记录。 在树结构的遍历过程中,...
- `CONNECT BY PRIOR`: 定义递归关系,即子节点与父节点之间的关联方式。 - `child_column` 和 `parent_column`: 分别代表子节点列和父节点列。 **四种递归查询情况**: - **第一种情况**: `PRIOR`在子节点端(向下...
要的时候有两种写法:CONNECT BY PRIOR EMPNO=MGR 或 CONNECT BY EMPNO=PRIOR MGR,前一种写法表示采用自上而下的搜索方式(先找父节点然后找子节点),后一种写法表示采用自下而上的搜索方式(先找叶子节点然后找父...
- `CONNECT BY` 子句指定了连接当前行和父行的条件,`PRIOR` 关键字用来引用父行的列。 2. **层级连接条件** `condition2`通常包含`PRIOR`关键字和一个字段名,表示当前行的某个字段与父行的某个字段的关系。例如,...
1. **Connect By**:用于指定层级关系中的父节点与子节点之间的连接条件。例如,在一个员工表中,如果想要查找所有下属及其下属的下属,可以使用`CONNECT BY PRIOR employee_id = manager_id`这样的表达式来定义上...
[START WITH condition CONNECT BY PRIOR condition] [ WHERE condition ][ [ START WITH condition ] CONNECT BY condition [ ORDER SIBLINGS BY expression ] ] ``` 其中,`START WITH`子句用于指定查询的起始...
在上述查询中,`PRIOR`关键字用于引用当前行的前一行,`CONNECT BY`后的条件(`PRIOR EMPLOYEE_ID = MANAGER_ID`)表示当前行的上级ID等于前一行的员工ID。`LEVEL`伪列则记录了每一行在整个层级结构中的深度,根节点...
例如,`CONNECT BY PRIOR dept_id = par_dept_id`表示当前行的父节点的`dept_id`等于上一行的`par_dept_id`。 - `WHERE`:可选的过滤条件,用于进一步限制返回的记录。 - `ORDER BY`:对返回的记录进行排序,通常...
文章中给出了一个名为`t_test_connectby`的数据表例子,其中包含父子关系的节点数据。通过该表,我们可以更直观地了解Connect By的执行过程。 - 不指定起始条件时,使用`CONNECT BY`: ```sql SELECT * FROM t_test...
PRIOR 运算符被置于 CONNECT BY 子句中等号的后面时,则强制从叶节点到根节点的顺序检索,即由子节点向父节点方向通过树结构,我们称之为自底向上的方式。例如: ```sql CONNECT BY EMPNO=PRIOR MGR ``` 在这种...
例如,如果我们有一个员工表(EMPLOYEE),其中PARENT_EMP_ID字段表示父员工ID,那么以下查询可以找出所有属于某个员工的子员工: ```sql SELECT LEVEL, EMPLOYEE_NAME, EMPLOYEE_ID FROM EMPLOYEE START WITH ...