一、简单解释
oracle树查询的最重要的就是select…start with…connect by…prior语法了。依托于该语法,我们可以将一个表形结构的数据以树的顺序列出来。
语法:
select * from tableName
start with 条件A -- 开始递归的根节点,可多个条件
connect by prior 条件B -- prior 决定查询的索引顺序
where 条件 C
二、使用方式
1.简单查询(不加START WITH时)
select t.empno,t.mgr,t.deptno ,level
from emp t
connect by prior t.empno=t.mgr
order by level,t.mgr,t.deptno;
不加START WITH时加上start with条件时
2.向上查找(父=子)
找到empno为7369的所有领导。
select t.*,t.rowid from emp t
start with t.empno = 7369 --从empno为7369的开始查找
connect by prior t.mgr = t.empno; --上一条数据(这里就是empno为7369)的mgr == 当前遍历这一条数据的empno(那么就会找到empno为7902的用户)
向上查找3.向下查找(子=父)
找到empno为7566的所有下属
select t.*,t.rowid from emp t
start with t.empno = 7566
connect by prior t.empno = t.mgr; --注意:connect by t.mgr =prior t.empno与左边写法含义一样
向下查找三、基本语法
start with :设置起点,省略后默认以全部行为起点。
connect by [condition] :与一般的条件一样作用于当前列,但是在满足条件后,会以全部列作为下一层级递归(没有其他条件的话)。
prior : 表示上一层级的标识符。经常用来对下一层级的数据进行限制。不可以接伪列。
level :伪列,表示当前深度。
connect_by_root() :显示根节点列。经常用来分组。
connect_by_isleaf :1是叶子节点,0不是叶子节点。在制作树状表格时必用关键字。
sys_connect_by_path() :将递归过程中的列进行拼接。
nocycle , connect_by_iscycle : 在有循环结构的查询中使用。
siblings : 保留树状结构,对兄弟节点进行排序
来源:
https://blog.csdn.net/tanggao1314/article/details/52652111?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162538763316780265474850%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162538763316780265474850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-22-52652111.first_rank_v2_pc_rank_v29_1&utm_term=ORACLE%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187
https://blog.csdn.net/tanx17/article/details/108683534?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162538763316780269872688%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=162538763316780269872688&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~baidu_landing_v2~default-5-108683534.first_rank_v2_pc_rank_v29_1&utm_term=ORACLE%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187
https://blog.csdn.net/qq_32392597/article/details/105773226?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522162538763316780265474850%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=162538763316780265474850&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~first_rank_v2~rank_v29-10-105773226.first_rank_v2_pc_rank_v29_1&utm_term=ORACLE%E9%80%92%E5%BD%92%E5%87%BD%E6%95%B0&spm=1018.2226.3001.4187
网友评论