Leaf(叶子)就是没有子孙的孤立节点。Oracle 10g提供了一个简单的connect_by_isleaf=1,0 表示非叶子节点
select level,id,manager_id,last_name, title from s_emp
where connect_by_isleaf=1 –表示查询叶子节点
start with manager_id=2
connect by prior id=manager_id;
也可以通过连接查询获得,方法有多种,叶子节点肯定是level最大的节点。
select a.lev,b.id from (
select max(level) lev from s_emp --查询最大的level
无限层次树形笔记本 start with manager_id=2
connect by prior id=manager_id) a,
(select level lev,id
无限层次树形笔记本from s_emp
start with manager_id=2
connect by prior id=manager_id) b
where a.lev=b.lev;
注意:level不可以前面加表名
其他:
Connect by 与rownum的联合使用,比如给定两个日期,查询中间所有的日期,按月递增:
SELECT to_date(2008-10-1, YYYY-MM-DD) + ROWNUM - 1
FROM dual
CONNECT BY rownum <= to_date(2008-10-5, YYYY-MM-DD) -
to_date(2008-10-1, YYYY-MM-DD) + 1;
获取01到99
select case when length(rownum)=1 then to_char(0)||rownum else to_char(rownum) end
无限层次树形笔记本from dual
connect by rownum<=99;
无限层次树形笔记本select lpad(rownum,2,0) from dual connect by rownum<=99;
3 增强特性
3.1 SYS_CONNECT_BY_PATH
下一篇:层次交换网络基本结构
文章地址:https://www.tianxianmao.com/article/other/zczdcczdyzjd.html