表结构 : 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查询无论向上或向下查询、无论是否得到数据,结果中都包含自身。
语句应该还有其他的写法,欢迎大家优化。