【发布时间】:2015-03-07 13:13:57
【问题描述】:
有没有办法在 SQL 中发送递归查询?
给定结束节点 ID,我需要按级别排序到根节点(具有 parentid = NULL)的所有行。例如。如果我有类似的东西:
nodeid | parentid
a | NULL
b | a
c | b
在查询end_node_id = c 后,我会得到类似的信息:
nodeid | parentid | depth
a | NULL | 0
b | a | 1
c | b | 2
(除了深度,我还可以使用到给定端节点的距离)
我能想到的唯一(也是显而易见的)方法是每行执行一次查询,直到到达父节点。
有没有更有效的方法?
【问题讨论】:
-
你使用的是什么关系型数据库?
-
它必须适用于 Oracle 和 Postgres(尽管通用解决方案是理想的)
-
WITH RECURSIVE(postgresql.org/docs/8.4/static/queries-with.html) 似乎适用于 Postgres。现在我需要一个 Oracle 解决方案 -
在下面查看我的答案以获取 Oracle 解决方案
标签: sql tree hierarchical-data recursive-query hierarchical-query