在oracle数据库树层次,轻松得到层次数,及条件节点所有叶子节点
创建表结构就不用多讲了,肯定必不可少有上下级树特征字段
T_AG_CONTENTMESSAGE
表数据
id superid infocontent
01 0
02 0
054 0
0101 01
0102 01
010101 0101 短信内容01
010102 0101 短信内容02
010201 0102 短信内容03
010202 0102 短信内容04
05401 054 短信内容05
05402 054 短信内容06
查看层次语句,得到每个节点处的层次
select (level-1) as le ,a.id
from t_ag_contentmessage a
start with a.id ='0'
connect by prior a.id = a.superid
而要想得到如 01节点下所有叶子节点
就如下
SELECT id
FROM (
SELECT id,infocontent
FROM T_AG_CONTENTMESSAGE
START WITH id= '01' --设置相应节点参数
CONNECT BY PRIOR id = superid
) k
WHERE length(TRIM(k.infocontent)) > 0;
找出子节点下所有叶子节点 如果本身就是叶子节点时,则结果为其本身
看就是这么简单,这要得意于oracle的功能强大,呵呵