【发布时间】:2013-01-19 17:57:31
【问题描述】:
所以我有一个 SQL 查询来检索邻接列表中给定节点的所有子节点。
WITH RECURSIVE
q AS
(
SELECT id, name
FROM categories h
WHERE id = 11846801
UNION ALL
SELECT hc.id, hc.name
FROM q
JOIN categories hc
ON hc.parent = q.id
)
SELECT name
FROM q
有没有办法修改这个查询以返回我只是节点的底层?我不能只指定一个给定的级别,因为每条路径可能有不同的深度。
【问题讨论】:
-
再想一想,“底部”级别,所以你的意思是 所有 离开节点或只离开从一开始就具有最长路径的节点。我的答案是第二种解释。
-
是的,请参阅下面的评论。我想多了这个问题。当它只是找到所有没有指向它的父引用的节点时。大约有一百万零一种方法来解决这个问题。
-
但你可能想要最快的......
-
没错,尽管对于我的用例来说,数据库时间中的几毫秒只是运行时间的一小部分。
标签: sql postgresql recursive-query adjacency-list