Oracle start with connect by prior 用法

Oracle start with connect by prior 用法 

语法: select * from 表名 where 条件1 start with 条件2 connect by prior 当前表字段=级联表字段 start with与connect by prior语句完成递归记录,形成一棵树形结构,通常可以在具有层次结构的表中使用。 start with表示开始的记录 connect by prior 指定与当前记录关联时的字段关系代码: 
--创建部门表,这是一个具有层次结构的表,子记录通过parent_id与父记录的id进行关联 create table DEPT( ID NUMBER(9) PRIMARY KEY, --部门ID NAME VARCHAR2(100), 
--部门名称 PARENT_ID NUMBER(9) 
--父级部门ID,通过此字段与上级部门关联 ); 向表中插入如下数据,为了使代码简单,一个部门仅具有一个下级部门

●从根节点开始查询递归的记录 select * from dept start with id=1 connect by prior id = parent_id; 下面是查询结果,start with id=1表示从id=1的记录开始查询,向叶子的方向递归,递归条件是id=parent_id,当前记录的id等于子记录的parent_id 
●从叶子节点开始查询递归的记录 select * from dept start with id=5 connect by prior parent_id = id; 
下面是查询结果,递归条件按照当前记录的parent_id等与父记录的id 
●对查询结果过滤 select * from dept where name like ‘%销售%‘ start with id=1 connect by prior id = parent_id; 在下面的查询结果中可以看到,首先使用start with... connect by prior查询出树形的结构,然后where条件才生效,对全部查询结果进行过滤 
●prior的作用 prior关键字表示不进行递归查询,仅查询出满足id=1的记录,下面是将第一个查询去掉prior关键字后结果 select * from dept start with id=1 connect by prior id = parent_id;

时间: 2024-10-09 06:13:34

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.csdn.net/apicescn/article/details/1510922 ,本人记录下来只是为了方便查看 原文: connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start by cond1 connect by cond2 where cond3; 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: id,parentid那么通过表示每一条记录

Oracle start with...connect by prior 实现递归查询

基本语法: <span style="font-size:18px;"><em>select ... from <TableName> where <Conditional-1> start with <Conditional-2> connect by <Conditional-3>; <Conditional-1>:过滤条件,用于对返回的所有记录进行过滤. <Conditional-2>

Oracle start with connect by prior... 递归查询

start with connect by prior 主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个节点,遍历其最终父节点或者子节点. -- create table create table prior_test ( parentid number(10), subid number(10) ); -- 字段类型最好用 number,而不是 varchar2,因为测试 SQL 需要比较 id -- insert insert into prior_test values

在Oracle 中使用CONNECT BY PRIOR START WITH 语句详解

语法:connect by 是结构化查询中用到的,其基本语法如下: start with,connect by主要目的:从表中取出树状数据.可以假想成表中存成的各条数据是分别是树中的一个结点. select … from tablename start with 条件1 connect by prior 条件2 where 条件3: 其中: 条件1 是根结点限定语句,当然也可以放宽限定条件取多个结点,就形成多根树. 条件2 是连接条件. 条件3 是过滤条件,用于所返回的所有记录进行过滤. 例如

Oracle高级函数篇之递归查询start with connect by prior简单用法

路飞:" 把原来CSDN的博客转移到博客园咯!" 前段时间,自己负责的任务中刚好涉及到了组织关系的业务需求,自己用了oracle递归查询.下面简单来举个例子.在工作中我们经常会遇到有一定组织关系层次的关系.比如某个省下有多少市,每个市下又有多个区.再或者公司组织部门相互的隶属关系.这时我们就可能会用到 start with connect by prior 递归查询了 用法举例 1. 基本sql语法: select  ...   from  + 表   start with      

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

oracle 中 Start with...connect by 的用法(递归查询)

阿里电面问到了相关的知识,在网上找到这方面的文章. 这几个关键字是查询递归数据的,形成一个树状结构.目前只有oracle支持,其他数据都要结合存储过程实现 语法: select * from some_table [where 条件1] connect by [条件2] start with [条件3]; 其中 connect by 与 start with 语句摆放的先后顺序不影响查询的结果,[where 条件1]可以不需要.  [where 条件1].[条件2].[条件3]各自作用的范围都不