本来想在Linux上搭建Oracle环境的,无奈能力有限,搭了几次都没成功,放弃了,今天学了oracle的层次查询,感觉蛮有用处,记录下来。
如图所示,这是一张员工表,员工表包括员工名和老板姓名,想要查询出上图数据要么就用自连接,要么就使用层次查询,然而自连接虽然查询结果层次明显,但是其缺点是查询的次数为笛卡尔积,在数据量较大的表中不实用,这就需要用到层次查询,层次查询就如其名,将表中数据分层,建立如右图所示的树。实现代码如下:
select level,empno,ename,mgr
from emp
connect by prior empno=mgr
start with mgr is null
order by 1;