如何根据最底层节点(多个)查找出这些节点所对应的顶层父节点(除根节点外)?
node parentnode
0 -1
2 0
3 0
4 2
5 3
6 4
7 5
如上:已知 6 4与7 5这两条记录如何根据它查出 2 0与3 0这两条记录(可能还不止三层,假定层数未知)如何写用标准SQL写出一个通用的查询语句?
注:要求使用标准SQL[color=red][/color]
如何根据最底层节点(多个)查找出这些节点所对应的顶层父节点(除根节点外)?
node parentnode
0 -1
2 0
3 0
4 2
5 3
6 4
7 5
如上:已知 6 4与7 5这两条记录如何根据它查出 2 0与3 0这两条记录(可能还不止三层,假定层数未知)如何写用标准SQL写出一个通用的查询语句?
注:要求使用标准SQL[color=red][/color]
[code="sql"]
with parent (node, parentnode) as (
select node, parentnode
from table_name
where node = 6
union all
select t.node, t.parentnode
from table_name t join parent p on t.node = parent.parentnode )
select * from parent where parentnode = -1
[/code]
p.s. 递归的with语句属于标准sql 但orcale不支持 其它的数据库在语法上也有区别。