【发布时间】:2021-08-09 06:16:50
【问题描述】:
我有两列数字。 目标是从数字 f.e. 开始。 55,提取所有“连接”的数字 (从这些数字中的任何一个开始,应该会产生相同的结果)
A B
-----
56 55
55 56
69 55
35 55
47 55
60 55
22 55
26 47
2 35
..... more data
在这种情况下,此处显示的所有数字:55,56,35,69,60,22,47,2,26
我使用以下查询:
with recursive merge as (
select A from T where A = 55 or B = 55
union
select B
from T cm join merge m
on cm.A = m.A or cm.B = m.A
)
select * from merge
但我只取回那些:55,56,35,69,60,22,47
我认为使用它会起作用:
with recursive merge as (
select A from T where A = 55 or B = 55
union
(
select B
from T cm join merge m
on cm.A = m.A
union
select A
from T cm join merge m
on cm.B = m.A
)
)
select * from merge
但是 Postgres 不允许在递归查询中多次使用“合并”!!?
我的目标是从数字开始找到“链”中所有连接的数字,即
55 => 56,35,69,60,22,47 => 2,26 ....
因为:
47 => 26
35 => 2
【问题讨论】:
标签: sql postgresql recursion connection