表:parentid为0的数据即为根节点。
id name parentID
1 湖北 0
2 武汉 1
3 武昌 2
4 北京 0
5 朝阳 4
如下图所示:
武昌-武汉-湖北
朝阳-北京我想得到每个节点的根节点:
1 1
2 1
3 1
4 4
5 4
请大家指教。
id name parentID
1 湖北 0
2 武汉 1
3 武昌 2
4 北京 0
5 朝阳 4
如下图所示:
武昌-武汉-湖北
朝阳-北京我想得到每个节点的根节点:
1 1
2 1
3 1
4 4
5 4
请大家指教。
with test as(
select 1 id,'湖北' name, 0 parentid from dual union all
select 2 id,'武汉' name, 1 parentid from dual union all
select 3 id,'武昌' name, 2 parentid from dual union all
select 4 id,'北京' name, 0 parentid from dual union all
select 5 id,'朝阳' name, 4 parentid from dual)
SELECT id, connect_by_root id root_id, NAME
FROM test
CONNECT BY PRIOR id = parentid
START WITH parentid = 0;