connect by和strart with子句
--使用connect by和strart with子句
SELECT [level],column,expression, ...
FROM table
[WHERE where_clause]
[[START WITH start_condition] [CONNECT BY prior_condition]];
SELECT empno,
mgr,
ename,
job
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr;
--使用偽列level
SELECT LEVEL,
empno,
mgr,
ename,
job
FROM emp
START WITH mgr IS NULL
CONNECT BY PRIOR empno = mgr
ORDER BY LEVEL, mgr, empno;
--格式化層次查詢的結果
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;
--從非根節點開始遍歷
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
START WITH ename like 'JONES'
CONNECT BY PRIOR empno = mgr;
--在start with子句中使用子查詢
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
START WITH empno=(select empno from emp where ename='CLARK')
CONNECT BY PRIOR empno = mgr;
--向上遍歷
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
START WITH ename like 'JONES'
CONNECT BY PRIOR mgr=empno;
--從層次化查詢中刪除節點
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
WHERE ename !='JONES'
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;
--上面的查詢雖然刪除了節點但是並沒有刪除該節點的分支,為了連同分支也一併刪除,在connect by子句中使用and子句
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job
FROM emp
START WITH mgr is null
CONNECT BY PRIOR empno = mgr
AND ename !='JONES';
--在層次化查詢中加入其它條件
SELECT LEVEL,
empno,
mgr,
lpad(' ',2*level-1)||ename as employee,
job,
sal
FROM emp
WHERE sal<3000
START WITH mgr is null
CONNECT BY PRIOR empno = mgr;
connect by和strart with子句的更多相关文章
- Oracle学习之start with...connect by子句的用法
转自:http://www.blogjava.net/xzclog/archive/2010/03/05/314642.html,多谢博主分享 Oracle中start with…connect by ...
- Oracle 之 树查询 START WITH ... CONNECT BY ...子句
START WITH ... CONNECT BY ...子句是结构化查询中用到的,其基本语法是: select … from tablename start with 条件1 connect by ...
- Oracle中start with...connect by/start with…connect by prior子句的用法
connect by 是结构化查询中用到的,其基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3;例:select * ...
- Oracle中start with...connect by (prior)子句的用法
connect by 是结构化查询中用到的,基本语法是:select … from tablenamestart with 条件1connect by 条件2where 条件3; 例:select * ...
- Start with connect by prior 递归查询
在SELECT命令中使用CONNECT BY和START WITH子句可以查询表中的树型结构关系.其命令格式如下: SELECT * from CONNECT BY {PRIOR列名1=列名2|列名1 ...
- oracle分层查询中的start with和connect by(树结构查询)
来源: http://blog.csdn.net/itmyhome1990/article/details/16338637 ORACLE是一个关系数据库管理系统,它用表的形式组织数据,在某些表 ...
- Oracle “CONNECT BY” 使用 [转]
Oracle “CONNECT BY”是层次查询子句,一般用于树状或者层次结果集的查询.其语法是: 1 [ START WITH condition ]2 CONNECT BY [ NOCYCLE ] ...
- PLSQL_基础系列11_递归和层次查询CONNECT BY(案例)
2015-05-31 Created By BaoXinjian
- oracle中 connect by prior 递归算法 -- 理解
oracle中 connect by prior 递归算法 -- 理解 http://blog.163.com/xxciof/blog/static/7978132720095193113752/ ...
随机推荐
- vi命令文件编辑
vi命令是UNIX操作系统和类UNIX操作系统中最通用的全屏幕纯文本编辑器. Linux中的vi编辑器叫vim,它是vi的增强版(vi Improved),与vi编辑器完全兼容,而且实现了很多增强功能 ...
- 【Linux笔记】ldconfig、ldd
一.ldconfig ldconfig是一个动态链接库管理命令,为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig. ldconfig 命令的用途,主要是在默认搜寻目录(/ ...
- python自动化之web抓取
''' 从web抓取数据: webbrowser:是python自带的,打开浏览器获取指定页面. requests:从因特网上下载文件和网页. Beautiful Soup:解析HTML,即网页编写的 ...
- java 每一个对象都是根据hashCode区别的 每次返回不同的内存地址
可以通过hashCode比较对象,hashCode如果重写的话 返回的内存地址是一样的 则不能创建对象
- git 常用命令(含删除文件)
git 常用命令(含删除文件) Git常用操作命令收集: 1) 远程仓库相关命令 检出仓库:$ git clone git://github.com/jquery/jquery.git 查看远程仓库: ...
- ldap禁止匿名用户登录
此处默认ldap已经安装完成,安装文档传送门:https://www.cnblogs.com/crysmile/p/9470508.html openldap默认安装完成,是允许匿名用户登录的,因此需 ...
- BZOJ 3143 游走 | 数学期望 高斯消元
啊 我永远喜欢期望题 BZOJ 3143 游走 题意 有一个n个点m条边的无向联通图,每条边按1~m编号,从1号点出发,每次随机选择与当前点相连的一条边,走到这条边的另一个端点,一旦走到n号节点就停下 ...
- loj2541【PKUWC2018】猎人杀
题解 题目中的选择条件等价于正常选择所有猎人,而如果选到已经出局的猎人就继续选: 这两种选法是一样的因为(设$W=\sum_{i=1}^{n}w_{i}$ , $X$为已经出局的猎人的$w$之和): ...
- C++:(拷贝,继承,智能指针)练习
#include <iostream> #include <string> #include <memory> #include <functional> ...
- haproxy做TCP层的负载均衡
最新项目中发现,大量游戏玩家访问登录服务器时出现延迟,导致玩家无法登录,愿意可能是登录服务器性能达到极限. 所以目前想通过proxy的方式访问登录服务器集群,避免登录延迟. 1.下载haproxy最新 ...