本文内容
- 演示层级查询
- 层级查询(Hierarchical Queries)
- 参考
演示层级查询
了解层级查询的意义在于,可以省去程序的递归代码。写递归总是很烦人。假设在 Oracle 的
scott 用户下,用
EMP 表演示层级查询。该表包含某个员工及其上级。全部内容如下:
职位最高的当然是主席 PRESIDENT;然后是经理 MANAGER;其次是分析师 ANALYST;最后是营业员 CLEAK 和销售人员 SALESMAN。
示例 1:演示员工编号为 7566 的员工及其所有下属。select t.empno as 员工编号,<!--CRLF--> t.ename as 员工姓名,<!--CRLF--> t.job as 职位,<!--CRLF--> t.mgr as 上级编号,<!--CRLF--> level<!--CRLF-->from emp t<!--CRLF--> start with t.empno = 7566<!--CRLF-->connect by prior t.empno = t.mgr;<!--CRLF-->
示例 2:演示员工编号为 7566 的所有下属。select t.empno as 员工编号,<!--CRLF--> t.ename as 员工姓名,<!--CRLF--> t.job as 职位,<!--CRLF--> t.mgr as 上级编号<!--CRLF-->from emp t<!--CRLF--> start with t.mgr = 7566<!--CRLF-->connect by prior t.empno = t.mgr;<!--CRLF-->
示例 3:演示员工编号为 7876 员工及其所有上级。select t.empno as 员工编号,<!--CRLF--> t.ename as 员工姓名,<!--CRLF--> t.job as 职位,<!--CRLF--> t.mgr as 上级编号<!--CRLF-->from emp t<!--CRLF--> start with t.empno = 7876<!--CRLF-->connect by prior t.mgr = t.empno;<!--CRLF--> 从上面演示可以看出,层级查询既可以“向下”查询,也可以“向上”查询,类似“递归”。
start with t.empno = 7566 指定根节点;而
connect by prior t.empno = t.mgr 指定节点的关系,上级编号等于当前的员工编号。
start with t.empno = 7876 指定根节点;而
connect by prior t.mgr = t.empno 指定节点的关系。员工编号等于当前员工的上级编号。
MySQL 5.5 自动安装脚本Oracle 11g Release 1 (11.1) SQL_层级查询(详)相关资讯 Oracle高级培训
- delete表的数据后恢复 (08/30/2012 08:59:58)
- 使用ASH信息,发现高CPUsession (08/14/2012 07:21:32)
- 如何阅读Oracle Errorstack Output (08/14/2012 07:15:47)
| - Oracle Apps Patching:adpatch( (08/16/2012 15:41:37)
- 话说V$SQL_MONITOR (08/14/2012 07:19:54)
- Oracle Apps DBA工具:ADADMIN使用 (08/14/2012 07:00:09)
|
本文评论 查看全部评论 (0)