oracle 查询树形结构最底级节点

时间:2022-09-02 00:28:15

表结构 : GOODS_TYPE_ID , GOODS_TYPE_TITLE , _UPPER_GOODS_TYPE_ID

select * from ICOM_GOODS_TYPE_TABLE a , 
(
select I.GOODS_TYPE_TITLE,count(I.GOODS_TYPE_TITLE) from ICOM_GOODS_TYPE_TABLE I group by I.GOODS_TYPE_TITLE having count(I.GOODS_TYPE_TITLE) =1
--start with I.GOODS_TYPE_TITLE = '秋冬季大棚参三级商品'           
connect by prior                        
I.UPPER_GOODS_TYPE_ID = I.GOODS_TYPE_ID
) b
where a.goods_type_title = b.GOODS_TYPE_TITLE
思路即如果是最底级节点 那么其分组后的count必然是1 因为它下面没有子节点了 而且connect by prior查询无论向上或向下查询、无论是否得到数据,结果中都包含自身。
语句应该还有其他的写法,欢迎大家优化。