层次查询start with ... connect by

如:select distinct dep_id from t_sys_dep_dimensions start with dep_id = (select dept_id from t_sys_person where mdm_user_id=‘#userId#‘) connect by nocycle prior dep_id = parent_dep_id   ;

查找#userId#所在部门的顶级部门。

START WITH 定义数据行查询的初始起点;

nocycle 防止循环查找;

CONNECT BY

prior 定义表中的各个行是如何联系的;connect by 后面的"prior" 如果缺省,则只能查询到符合条件的起始行,并不进行递归查询;

时间: 2024-11-03 20:54:58

层次查询start with ... connect by的相关文章

oracle层次查询

1 定义: 层次查询使用树的遍历,走遍含树形结构的数据集合,来获取树的层次关系报表的方法 树形结构的父子关系,你可以控制: ① 遍历树的方向,是自上而下,还是自下而上 ②  确定层次的开始点(root)的位置 层次查询语句正是从这两个方面来确定的,start with确定开始点,connect by确定遍历的方向  www.2cto.com 2 语法: 注释: ① level是伪列,表示等级 ② from后面只能是一个表或视图,对于from是视图的,那么这个view不能包含join ③ Wher

SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR)

--====================================================== --SQL基础-->层次化查询(START BY ... CONNECT BY PRIOR) --====================================================== 层次化查询,即树型结构查询,是SQL中经经常使用到的功能之中的一个,通常由根节点,父节点,子节点,叶节点组成,其语法例如以下: SELECT [LEVEL] ,column,ex

Oracle分区表的层次查询如何才能用到分区?

最近在调优分区表的层次查询时,发现用不到分区,做了一个实验,发现还是可以用的到的,只是写法上有些要求. drop table test; create table test ( id  number primary key, parent_id number, name varchar2(20), code varchar2(4) ) partition by list(code) ( partition p1 values('0301'), partition p2 values('0302'

Oracle层次查询和分析函数在号段选取中的应用

转自:http://www.itpub.net/thread-719692-1-1.html 摘要一组连续的数,去掉中间一些数,如何求出剩下的数的区间(即号段)?知道号段的起止,如何求出该号段内所有的数?知道一个大的号段范围和已经取过的号段,如何求出可用的号段?利用Oracle提供的强大的查询功能以及分析函数,我们可以很轻松的解决上述问题. 关键词:号段选取.连续数.断点.层次查询.分析函数.connect by.rownum.level.lead.lag 1.        问题的提出在实际工

第29章 层次查询

第29章 层次查询 查询员工上下级关系 查看员工上级领导select empno,ename,mgr from emp start with empno=7839 connect by prior mgr=empno; 查看领导的下属select empno,ename,mgr from emp start with empno=7839 connect by prior empno=mgr; 分级查看,加入位列levelselect empno,ename,mgr,level from emp

Oracle 之 树查询 START WITH ... CONNECT BY ...子句

START WITH ... CONNECT BY ...子句是结构化查询中用到的,其基本语法是: select - from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table start with org_id = 'zgs' connect by prior org_id = parent_id; 即,我们将数据以树状结构形式存储在一张表里,比如一个表中存在两个字段:org_id,parent_

[转载]oracle树形查询 start with connect by

一.简介 在oracle中start with connect by (prior) 用来对树形结构的数据进行查询.其中start with conditon 给出的是数据搜索范围, connect by后面给出了递归查询的条件,prior 关键字表示父数据,prior 条件表示子数据需要满足父数据的什么条件.如下start with id= '10001' connect by prior parent_id= id and prior num = 5表示查询id为10001,并且递归查询pa

mysql递归层次查询

首先,需要了解两个MySQL的原生函数FIND_IN_SET和group_concat: 使用范例: SELECT FIND_IN_SET('a','a,b,c,d'); 运行结果:1: SELECT group_concat(cdbh) FROM ss_menu; 运行结果:1,3,4,6,7,8,9,10,--等: 创建树形递归函数: BEGIN         DECLARE sTemp VARCHAR(1000);          DECLARE sTempChd VARCHAR(10

SQL Fundamentals: 子查询 || 行列转换(PIVOT,UNPIVOT,DECODE),设置数据层次(LEVEL...CONNECT BY)

SQL Fundamentals || Oracle SQL语言 子查询(基础) 1.认识子查询 2.WHERE子句中使用子查询 3.在HAVING子句中使用子查询 4.在FROM子句中使用子查询 5.在SELECT子句中使用子查询 6.WITH子句 子查询(进阶) 7.分析函数 8.行列转换 9.设置数据层次 八.行列转换 pivot和unpivot函数是Oracle 11g增加的新函数,利用此函数可以实现行列转换操作 按照原始方式实现,使用通用函数中的DECODE()函数 列字段的处理 SQ