connect by prior id= pid start with id='1' 树结构查询

基础表创建:

with temp as (
select ‘公司‘ name, ‘1‘ id, ‘‘ pid from dual union all
select ‘部门1‘  name , ‘11‘ id, ‘1‘ pid from dual union all
select ‘部门2‘  name , ‘12‘ id, ‘1‘ pid from dual union all
select ‘员工11‘ name , ‘111‘ id , ‘11‘ pid from dual union all
select ‘员工12‘ name , ‘112‘ id , ‘11‘ pid from dual union all
select ‘员工21‘ name , ‘121‘ id , ‘12‘ pid from dual
)

等号左边的字段为基础,查询右边字段=左边字段的

从上往下查

通过根节点可以获取包括该根节点及以下的所有子节点
select * from temp
connect by prior  id= pid
start with id=‘1‘

根节点可以多选
select * from temp
connect by prior  id= pid
start with id in (‘11‘ ,‘12‘)

添加where语句

select * from temp
where id = ‘111‘
connect by prior  id= pid
start with id in (‘11‘ ,‘12‘)

从下往上查

select * from temp
connect by prior pid= id
start with id = ‘121‘

connect by prior id= pid start with id='1' 树结构查询

原文地址:https://www.cnblogs.com/-beauTiFul/p/9121553.html

时间: 2024-10-17 21:52:32

connect by prior id= pid start with id='1' 树结构查询的相关文章

在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树操作(select .. start with .. connect by .. prior)

oracle中的递归查询可以使用:select .. start with .. connect by .. prior 下面将会讲述oracle中树形查询的常用方式,只涉及到一张表. 一. 建表语句: -- 菜单目录结构表 create table tb_menu( id number(10) not null, -- 主键id title varchar2(50), -- 标题 parent number(10) -- parent id ) -- 父菜单 insert into tb_me

start with connect by prior 递归查询用法

start with connect by prior 递归查询用法 这个子句主要是用于B树结构类型的数据递归查询,给出B树结构类型中的任意一个结点,遍历其最终父结点或者子结点. 先看原始数据: 1 create table a_test 2 ( parentid varchar2(10), 3 subid varchar2(10)); 4 5 insert into a_test values ( '1', '2' ); 6 insert into a_test values ( '1', '

通过Docker进程pid获取容器id

虽然Docker是通过namespace隔离技术实现容器间进程的隔离,但在运行Docker的主机中,Docker容器内的进程与主机内运行的进程是在同一个namespace(假设叫A)的.虽然在Docker容器内应用进程的父进程都是pid为1的那个进程(这些进程都是单独的namespace,这个namespace与前面提到的namespace不是同一个,此处假设为B),但在namespace A中Docker内容器实际的父进程都是Docker daemon,由于父进程具有对子进程管理的能力,而子进

进程ID[PID(Process ID)]与端口号[(Port ID)]的联系

1.首先声明一点:PID不是端口(port id),而是Process ID进程号的意思. 2.那么,什么是进程号? 采集网友的意见就是: 进程号,是系统分配给么一个进程的唯一标识符.PID就是各进程的身份标识符,程序一运行系统就会自动分配给进程一个独一无二的PID.进程终止后,PID被系统回收,可能会被继续给新运行的程序. 3.深入理解二者关系: 一个程序一个端口: 一个端口可以有多个进程: (顺便提一下:一个进程可以有多个线程(将一个进程的系统资源共享给一个程序内多道分程序,并行运行,以达到

在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 树操作(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 的 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, PAR

START WITH CONNECT BY PRIOR 链表查询

使用场景:排序 设计思路,id为主键,index为顺序,index存前一个节点的id,当然,按照这个思路可以实现双向链表的(preindex存前一个节点,nextindex存下一个节点) 这样的话排序只需交换需要排序的index即可,如: A(id:1 index:0) B(id:2 index:1)C(id:3 index:2)D(id:4 index:3) 四个节点如果想将D排序到B前面,也就是A-D-B-C,这样只需要将D的index更换成B的index1,B节点的更换成D的id即可: 以