- 浏览: 56795 次
- 性别:
- 来自: 北京
最近访客 更多访客>>
最新评论
-
yvonxiao:
这个的确好用,我记得我以前是自己写了个存储过程来解决这种递归问 ...
Oracle Start With Connect By
Start With Connect By 是用来实现在一个表中存在父子关系的两个字段的树形结构,通过一个从一个字段开始,以树形结构去查找其子记录。
1、建表
create table TEST_STRAT_WTH111
(
OID VARCHAR2(20),
PARENT_ID VARCHAR2(20)
)
2、插入数据
insert into test_strat_wth (OID, PARENT_ID)
values ('0000005', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000003', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000004', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500001', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000006', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000600001', '0000006');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000600002', '0000006');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000007', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000008', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000009', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900001', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900002', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900003', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900004', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('00', '');
insert into test_strat_wth (OID, PARENT_ID)
values ('01', '');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500002', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500003', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500004', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000011', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100004', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100005', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000500001', '0100005');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000500002', '0100005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100006', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000600001', '0100006');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000600002', '0100006');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000010', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000001', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000005', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000003', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000004', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100007', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100008', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100010', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100009', '01');
COMMIT;
3、查询数据
SELECT *
FROM TEST_STRAT_WTH T
START WITH T.PARENT_ID IS NULL
CONNECT BY PRIOR T.OID = T.PARENT_ID
4、数据结果:
00
0000005 00
000000500001 0000005
000000500002 0000005
000000500003 0000005
000000500004 0000005
0000003 00
0000004 00
0000006 00
000000600001 0000006
000000600002 0000006
0000007 00
0000008 00
0000009 00
000000900001 0000009
000000900002 0000009
000000900003 0000009
000000900004 0000009
0000011 00
0000010 00
000001000001 0000010
000001000005 0000010
000001000003 0000010
000001000004 0000010
01
0100004 01
0100005 01
010000500001 0100005
010000500002 0100005
0100006 01
010000600001 0100006
010000600002 0100006
0100007 01
0100008 01
0100010 01
1、建表
create table TEST_STRAT_WTH111
(
OID VARCHAR2(20),
PARENT_ID VARCHAR2(20)
)
2、插入数据
insert into test_strat_wth (OID, PARENT_ID)
values ('0000005', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000003', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000004', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500001', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000006', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000600001', '0000006');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000600002', '0000006');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000007', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000008', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000009', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900001', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900002', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900003', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000900004', '0000009');
insert into test_strat_wth (OID, PARENT_ID)
values ('00', '');
insert into test_strat_wth (OID, PARENT_ID)
values ('01', '');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500002', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500003', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('000000500004', '0000005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000011', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100004', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100005', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000500001', '0100005');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000500002', '0100005');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100006', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000600001', '0100006');
insert into test_strat_wth (OID, PARENT_ID)
values ('010000600002', '0100006');
insert into test_strat_wth (OID, PARENT_ID)
values ('0000010', '00');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000001', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000005', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000003', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('000001000004', '0000010');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100007', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100008', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100010', '01');
insert into test_strat_wth (OID, PARENT_ID)
values ('0100009', '01');
COMMIT;
3、查询数据
SELECT *
FROM TEST_STRAT_WTH T
START WITH T.PARENT_ID IS NULL
CONNECT BY PRIOR T.OID = T.PARENT_ID
4、数据结果:
00
0000005 00
000000500001 0000005
000000500002 0000005
000000500003 0000005
000000500004 0000005
0000003 00
0000004 00
0000006 00
000000600001 0000006
000000600002 0000006
0000007 00
0000008 00
0000009 00
000000900001 0000009
000000900002 0000009
000000900003 0000009
000000900004 0000009
0000011 00
0000010 00
000001000001 0000010
000001000005 0000010
000001000003 0000010
000001000004 0000010
01
0100004 01
0100005 01
010000500001 0100005
010000500002 0100005
0100006 01
010000600001 0100006
010000600002 0100006
0100007 01
0100008 01
0100010 01
发表评论
-
oracle 命令
2009-02-05 20:30 1010一、ORACLE的启动和关闭 ... -
通过dbms_flashback找回误删除的数据收藏
2009-01-21 11:35 1344在使用DBMS_FLASHBACK时要首先注意以下几个事项: ... -
优化Oracle数据库性能收藏
2009-01-21 11:35 888优化策略 为了保 ... -
Oracle 表空间操作收藏
2009-01-21 11:32 1009创建表空间: 1、递增 ... -
移动数据文件收藏
2009-01-21 11:32 736移动数据文件: 1、首先使要移动数据文件的表空间离线. ... -
Oracle 死锁会话处理收藏
2009-01-21 11:31 1169--查询所有的死锁: SELECT * FROM V$LOCK ... -
Oracle 9i 打开autotrace on 查看执行计划收藏
2009-01-21 11:31 13311.创建表,通过utlxplan脚本 SQL> @? ... -
如何启用sqlplus的AutoTrace功能收藏
2009-01-21 11:31 846通过以下方法可以把Autotrace的权限授予Everyone ... -
user和schema的区别:
2009-01-21 11:30 1052说穿了其实user是控制权限的,而schema是个容器,非所有 ... -
解决Oracle数据文件和日志文件丢失的问题收藏
2009-01-21 11:29 2101今天不小心误删除了数据库的数据文件和日志文件,在启动数据库时报 ... -
Oracle表段中的高水位线HWM收藏
2009-01-21 11:28 2633在Oracle数据的存储中, ... -
深入了解oracle的高水位(HWM)收藏
2009-01-21 11:26 2273说到HWM,我们首先要简要的谈谈ORACLE的逻辑存储管理.我 ... -
ORACLE 日志文件相关查询收藏
2009-01-21 11:25 11911.查询系统使用的是哪一组日志文件: select * fro ... -
ORACLE热备份恢复手册收藏
2009-01-21 11:22 2330概要 1.1. 本文的目的 为了模拟测试oracle热备份的 ... -
(转)windows命令行下启动oracle
2009-01-21 09:56 1528--总结启动命令如下: lsnrctl [start|stop ... -
小议分析函数中排序对结果的影响(一)
2009-01-12 13:24 926分析函数中经常会包括O ... -
ORACLE10g新特性——全局HASH分区索引
2009-01-12 13:23 1762在10g以前,Oracle的全局索引分区方法只有一种,即范围分 ... -
深入认识Oracle Supplemental logging
2008-12-22 18:35 3143对于有过逻辑standby,streams搭建体验的朋友,肯定 ... -
深入分析Oracle数据库日志文件
2008-12-22 15:19 999深入分析Oracle数据库日志文件 作者:程永新 发文时间: ... -
oracle 介绍
2008-09-20 21:04 1159第二章 架构 ORACLE架构由3部分组成: 文件, 内存结 ...
相关推荐
### Oracle数据库中的START WITH 和 CONNECT BY 用法详解 在Oracle数据库中,处理层次结构数据时,`START WITH` 和 `CONNECT BY` 是非常有用的两个关键字。这些关键字可以帮助我们在查询时构建出树形或者层级结构的...
### Oracle Start With.Connect By Prior 子句实现递归查询 #### 概述 在Oracle数据库中,`Start With.Connect By Prior`子句是执行递归查询的一种强大工具,主要用于处理层次结构数据。这类数据通常存在于组织...
在Oracle数据库中,递归查询可以通过`START WITH CONNECT BY PRIOR`语句实现。此语句允许用户按照树状结构来检索数据。 ##### 1. `START WITH CONNECT BY PRIOR`用法详解 **基本语法**: ```sql SELECT * FROM ...
ORACLE 查询树型关系(connect_by_prior_start_with) Oracle 查询树型关系是指使用 START WITH 和 CONNECT BY 子句来实现 SQL 的层次查询。从 Oracle 9i 开始,可以通过 SYS_CONNECT_BY_PATH 函数实现将父节点到...
`START WITH...CONNECT BY PRIOR`是Oracle SQL中的一个特性,用于处理具有层级关系的数据。这个子句允许我们遍历和查询具有父子关系的数据,例如部门和其下属子部门,或者员工和他们的上级经理。 1. **START WITH...
connect by:connect by是必须的,start with有些情况是可以省略的,或者直接start with 1=1不加限制 prior:prior关键字可以放在等号的前面,也可以放在等号的后面,表示的意义是不一样的,比如 prior id = pid,...
### Oracle中的START WITH CONNECT BY PRIOR 用法详解 #### 一、概念介绍 在Oracle数据库中,`START WITH` 和 `CONNECT BY PRIOR` 是两个非常强大的特性,主要用于处理具有层级结构的数据。这两个特性可以帮助我们...
本文章详细介绍了Oracle中connect by...start with...的用法。
Oracle数据库通过提供`START WITH...CONNECT BY`语句来简化这类查询操作。此功能最早出现在Oracle 8.1.6版本,并一直沿用至今,成为处理递归查询的强大工具之一。 #### 二、Connect By与Start With详解 1. **...
通常,`CONNECT BY`与`START WITH`一起使用,`START WITH`指定了层级遍历的起始节点。 例如,假设我们有一个员工表(EMPLOYEE),其中包含上级员工ID(MANAGER_ID)字段,我们可以使用以下查询来展示员工的管理层次...
[ WHERE condition ][ [ START WITH condition ] CONNECT BY condition [ ORDER SIBLINGS BY expression ] ] ``` 其中,`START WITH`子句用于指定查询的起始节点,`CONNECT BY`子句用于指定查询的递归条件。 ...
Oracle 连接查询是指使用 START WITH 和 CONNECT BY 语句来实现递归查询的方法,这种方法可以生成树形结构的数据。在 Oracle 中,START WITH 语句用于指定递归查询的开始记录,而 CONNECT BY 语句用于指定递归查询的...
在SQL查询中,`START WITH` 和 `CONNECT BY` 是两个关键的子句,它们用于构建层次结构查询,通常在处理具有上下级关系的数据时非常有用,如员工与经理的关系、组织结构或者产品分类等。这两个子句是Oracle数据库特有...
文章中给出了一个名为`t_test_connectby`的数据表例子,其中包含父子关系的节点数据。通过该表,我们可以更直观地了解Connect By的执行过程。 - 不指定起始条件时,使用`CONNECT BY`: ```sql SELECT * FROM t_test...
递归树形结构查询主要依赖于`CONNECT BY`和`PRIOR`关键字,它们允许我们构建复杂的层级查询,以展示数据的层次关系。 在Oracle中,树形结构查询的基本语法如下: ```sql SELECT [LEVEL], * FROM table_name START ...
### Oracle中的Connect By Prior递归算法详解 ...通过正确地设置`START WITH`、`CONNECT BY`和`WHERE`子句,可以有效地查询和分析复杂的数据结构。理解其工作原理有助于更好地利用Oracle的功能来满足各种业务需求。
Oracle数据库中的`CONNECT BY PRIOR`是一个强大的查询构造器,用于处理树形数据结构,尤其在组织层级、部门结构或者员工管理系统中非常常见。这个功能允许我们从一个或多个根节点开始,按照指定的规则遍历整个树结构...
### Connect By Prior 数据库树的应用 #### 概述 在关系型数据库中,尤其是在 Oracle 数据库环境下,构建和查询层次结构数据是一项常见的需求。通过使用 `Connect By Prior` 存储过程,我们可以有效地处理这类问题...
在Oracle数据库中,`CONNECT BY` 是一个非常重要的SQL语法,用于构建层次查询,它能够帮助我们处理具有层级关系的数据,比如组织结构、产品分类、树形菜单等。`CONNECT BY` 查询允许从一个表中抽取数据,并按照指定...