oracle数据库SQL开发之层次查询
程序员文章站
2022-05-06 23:43:21
...
一、自然树结构
如emp表中数据
关系树结构
二、层次查询
语法结构:
select [level], column, expr...
from table
[where condition(s)]
[start with condition(s)]
[connect by prior column1=column2] ;
–level:节点的层次,伪列,由查询的起点开始算起为1,依次类推。
– from table:指定表、视图或包含列的快照,你只能从单独的一个表中选择。
–where: 限制返回的行。
– condition(s):是一个比较式。
– start with :**指定层次的根行 (起点)。**这个子句对于一个正确的分级查询是必须的。
– connect by prior:指定存在父与子行的关系列。对于分级查询该子句是必须的。
connect by prior 语句中的
emp员工表中经理号mgr、员工号empno
从顶向下
select empno, ename, job, mgr
from emp
start with ename = 'KING'
connect by prior empno = mgr;--parent key = child key:经理的员工编号=员工的经理编号
从底向上
select empno, ename, job, mgr
from emp
start with empno= 7876
connect by prior mgr = empno;--child key=parent key:员工的经理编号=经理的员工编号
三、修剪分枝
1.用 where 子句中条件去除一个结点
where ename <>'Higgins’
2.用 connect by 子句中条件去除一个分支
…connect by prior empno = mgr and ename <> ‘Higgins’;