+----+----------+-------+
| Id | ParentId | Value |
+----+----------+-------+
| 1 | 0 | X |
| 2 | 1 | X |
| 3 | 1 | X |
| 4 | 2 | X |
+----+----------+-------+
我有一个这样的数据库,限制是:
我要执行的查询是使所有行链接到id = 1的行。因此,我需要返回正确层次结构中的所有行。 我想知道是否有单个查询可以帮助我实现这一目标?我知道可以使用循环,但会减慢很多速度。 如果您有更好的结构建议,请告诉我。我不仅限于修改整个数据库。
答案 0 :(得分:0)
您没有指定要使用的数据库产品,但是以下是ANSI标准SQL(并且受所有现代DBMS支持):
with recursive tree as (
select id, parentid, value
from the_table
where id = 1
union all
select ch.id, ch.parentid, ch.value
from the_table ch
join tree p on p.id = ch.parentid
)
select *
from tree;