我希望通过Postgresql中的SQL遍历无向图。
我有一张表,其中包含起点和终点(作为ids)的所有边。
edge_id | start_node | end_node
1 4 5
2 5 7
3 1 5
这是我到目前为止所尝试的。这种情况在某些情况下有效,但是旅行指向图表,在某些情况下会导致错误。
WITH RECURSIVE path AS
(
SELECT
edge_id, start_node, end_node
FROM
simulation.edge_data
WHERE
start_node = ANY ('{ 1,8}'::int[])
OR end_node = ANY ('{ 1,8}'::int[])
UNION
SELECT
e.edge_id, e.start_node, e.end_node
FROM
simulation.edge_data e, path s
WHERE
s.start_node = e.start_node
OR s.start_node = e.end_node
OR s.end_node = e.end_node
OR s.end_node = e.start_node
)
SELECT * FROM path;
输出应该是连接到起点的所有边