oracle 的 start with connect by prior 学习

语法:

SELECT ... FROM    + 表名

START WITH         +
条件1

CONNECT BY PRIOR   + 条件2

WHERE             
+ 条件3

说明:

这个方法是用来查询树状结构的数据的。举个例子,我们有一个这样的结构

然后建一个这样的表,插入数据。

CREATE TABLE TEST(

ID NUMBER(2) PRIMARY
KEY,

PARENT_ID NUMBER(2)

);

INSERT INTO TEST (ID, PARENT_ID) VALUES (1, 0);

INSERT INTO TEST (ID, PARENT_ID) VALUES (2, 1);

INSERT INTO TEST (ID, PARENT_ID) VALUES (3, 1);

INSERT INTO TEST (ID, PARENT_ID) VALUES (4, 2);

INSERT INTO TEST (ID, PARENT_ID) VALUES (5, 2);

INSERT INTO TEST (ID, PARENT_ID) VALUES (6, 3);

INSERT INTO TEST (ID, PARENT_ID) VALUES (7, 3);

现在,我们可以开始查询了。

比如,我们要查询ID为3的子节点有哪些:

SELECT * FROM TEST START WITH ID = 3
CONNECT BY   PARENT_ID = PRIOR ID;

结果:

查询1的子节点:

查询3的父节点有哪些:

SELECT * FROM TEST START WITH ID = 3
CONNECT BY PRIOR  PARENT_ID =  ID

结果:

查询7的父节点有哪些:

基本用法就是这样了

时间: 2024-10-03 23:00:50

oracle 的 start with connect by prior 学习的相关文章

oracle中 start with .. connect by prior.. 用法简介

我们经常会将一个比较复杂的目录树存储到一个表中.或者将一些部门存储到一个表中,而这些部门互相有隶属关系.这个时候你就会用到connect by prior start with.oracle 提供了start with connect by 语法结构可以实现递归查询. connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by prior 条件2 where 条件3; 例: select *

Oracle中start with connect by prior用法

最近看到Oracle中有一个很好用的查询,它就是start with connect by prior,说白了就是递归算法.  如果表中存在层次数据,则可以使用层次化查询子句查询出表中行记录之间的层次关系基本语法: [ START WITH CONDITION1 ]CONNECT BY [ NOCYCLE ] CONDITION2[ NOCYCLE ]参数暂时不解释例: select empno, ename, job, mgr, hiredate, sal, comm, deptno, lev

oracle中 connect by prior 递归算法

http://blog.163.com/xxciof/blog/static/7978132720095193113752/ oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from ta

oracle中 connect by prior 递归查询

Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'HBHqfWGWPy' connect by prior org_id = parent_id; 简单说来是将一个树状结构存储在一张表里

oracle中 connect by prior 递归算法 -- 理解

http://blog.163.com/xxciof/blog/static/7978132720095193113752/ oracle中 connect by prior 递归算法 Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from ta

Oracle树查询(start with connect by prior)探究

oracle树查询的最重要的语法结构是:select-start with-connect by-prior,通过该查询可以将表中的关系以树的形式展示出来. 1.创建测试表及数据: --创建测试表 CREATE TABLE YAG_TREE( T_ID NUMBER(10) NOT NULL, --id T_CONTEXT VARCHAR2(20),   --内容 PARENTID NUMBER(10)       --父 id ); --创建序列 CREATE SEQUENCE SEQ_YAG

Oracle 树操作(select…start with…connect by…prior)

oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Oracle高级函数1------ Oracle 树操作(select…start with…connect by…prior)

oracle树查询的最重要的就是select…start with…connect by…prior语法了.依托于该语法,我们可以将一个表形结构的以树的顺序列出来.在下面列述了oracle中树型查询的常用查询方式以及经常使用的与树查询相关的oracle特性函数等,在这里只涉及到一张表中的树查询方式而不涉及多表中的关联等. 1.准备测试表和测试数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28

Oracle 中connect by / prior /start with用法

可以通过connect by / prior / start with 得到指定数据开始的所有上级父目录或者所有下级子目录 下面通过两个简单的例子学习一下两种用法. 方法一: SELECT DISTINCT T.CATALOG_ID, T.PARENT_CATALOG_ID   FROM BI_CATALOG T  START WITH T.CATALOG_ID = 324 CONNECT BY PRIOR T.PARENT_CATALOG_ID = T.CATALOG_ID 方法二: SELE