oracle中Connect By用法介绍
2015-08-14 19:00
736 查看
为解决oracle中自连接查询不适合操作大表的情况,采用connect by 方式实现。oracle中可以用START WITH...CONNECT BY PRIOR子句实现递归查询,connect by 在结构化查询中应用。
基本语法:
select ... from <TableName>
where <Conditional1>
connect by <Conditional2>
start with <Conditional3>
connect by 和start with的先后顺序可以调换
其中:
Conditional1是过滤条件,用于对返回的所有记录进行过滤。
Conditional2是连接条件
Conditional3是过滤条件,用于对返回的所有记录进行过滤。
select * From emp; 其中empno(员工编号),mgr(经理编号)
可以对其中员工和经理对应关系整理如下:其中下一级节点的经理号是上一级的员工号
查询语句:
SQL> select level 级数 ,connect_by_isleaf 是否叶子 , ename 员工姓名 ,mgr 经理号 from emp connect by prior empno=mgr start with mgr is null;
level,connect_by_isleaf,connect_by_iscycle伪列
level 就是这个数据属于哪一个等级
connect_by_isleaf 就是树的叶子节点
connect_by_iscycle 导致出现死循环的那个树枝
prior运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上
基本语法:
select ... from <TableName>
where <Conditional1>
connect by <Conditional2>
start with <Conditional3>
connect by 和start with的先后顺序可以调换
其中:
Conditional1是过滤条件,用于对返回的所有记录进行过滤。
Conditional2是连接条件
Conditional3是过滤条件,用于对返回的所有记录进行过滤。
select * From emp; 其中empno(员工编号),mgr(经理编号)
可以对其中员工和经理对应关系整理如下:其中下一级节点的经理号是上一级的员工号
查询语句:
SQL> select level 级数 ,connect_by_isleaf 是否叶子 , ename 员工姓名 ,mgr 经理号 from emp connect by prior empno=mgr start with mgr is null;
level,connect_by_isleaf,connect_by_iscycle伪列
level 就是这个数据属于哪一个等级
connect_by_isleaf 就是树的叶子节点
connect_by_iscycle 导致出现死循环的那个树枝
prior运算符必须放置在连接关系的两列中某一个的前面。对于节点间的父子关系,prior运算符在一侧表示父节点,在另一侧表示子节点,从而确定查找树结构是的顺序是自顶向下还是自底向上
相关文章推荐
- Oracle 学习之RAC(八) 向集群中添加节点
- oracle导出blob,clob出错的问题
- Oracle创建表空间、创建用户以及授权、查看权限
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(四)
- win7 or xp 下oracle 导入or导出
- oracle 根据一个表生成另一个新表和一个现有表给一个新的表赋值
- oracle 操作表
- oracle 分组后,求和
- 重装Oracle 10g RAC如何干净的清理系统
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(三)
- 配置 Oracle 11g侦听器来使用SQL操作ST_Geometry(DLL路径问题)
- Windows下Oracle数据库自动备份批处理脚本
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(二)
- 蓝色的成长记录——追逐DBA(8):为了夺回SP报告,回顾oracle的STATSPACK实验
- Oracle rman中restore和recover的区别
- Oracle导入:转储文件可能是原始的导出文件
- 使用Apache JMeter对SQL Server、Mysql、Oracle压力测试(一)
- Oracle 11g安装图文攻略
- Oracle 11g系统自动收集统计信息的一些知识
- oracle server配置:监听程序未启动或数据库服务未注册到该监听程序