select *
from (select SYS_CONNECT_BY_PATH(id, '--') re,
row_number() over(order by SYS_CONNECT_BY_PATH(id, '--') desc) rn
from 表名 t
start wITh t.id = '662'
connect by prior t.parent_merchant_id = t.id) a -- parent_merchant_id 是父类的id
where rn = 1;-- 查找id所对应的父类 并进行id 格式拼接如:--22--33--44--55--66 ,22 代表当前id
--如果套用 只需改掉表名和父类id 即可 查出来的是一条数据 --22--33--44--55--66 这就是结果
下面这个同理 修改 ,查出来的是多条记录
select t.id id from merchant t start with t.id='662' connect by prior t.id=t.parent_merchant_id;--查询出所有当前id 的子类
select t.id id from merchant t start with t.id='3722' connect by prior t.parent_merchant_id=t.id;--查询出所有当前id 的父类