【发布时间】:2020-06-11 17:03:41
【问题描述】:
我只是想在 postgresql 中使用递归 CTE 学习图遍历。
以下是我的数据集:
我正在使用下面的代码来获取路径以及现有列(节点和边)。 它给了我输出,但路径列不是 ARRAY 格式。
;WITH RECURSIVE CTE AS
(
SELECT NODE,EDGES,ARRAY[G.NODE]::TEXT AS PATH,1 AS LEVEL
FROM property_graph G
UNION ALL
SELECT G.NODE,G.EDGES,C.PATH || G.NODE,LEVEL + 1
FROM property_graph G
INNER JOIN CTE C ON G.NODE = ANY(C.EDGES)
WHERE G.NODE <> ALL(STRING_TO_ARRAY(C.PATH,'')) --Cond added to avoid cyclic graph
)
SELECT NODE,EDGES,PATH,LEVEL
FROM CTE
ORDER BY NODE,LEVEL;
你们能帮帮我吗?
提前致谢。
【问题讨论】:
标签: postgresql