【发布时间】:2012-09-09 16:55:04
【问题描述】:
我正在尝试在 PostgreSQL 中实现简单的递归函数,但我无法完成它...
我有表 MyTable,其中包括列 Col1 和 Col2。里面的数据是这样的:
Col1 | Col2
1 | 2
2 | 5
2 | 6
3 | 7
4 | 5
4 | 2
5 | 3
我想编写一个函数,它以 Col1 f.e. 的参数数组为参数。 (1,2) 并像这样从 Col2 给我返回值:
1 | 2
2 | 5
2 | 6
然后,再次执行结果: (2, 5, 6) 所以:
1 | 2
2 | 5
2 | 6
5 | 3
(2 已经在里面了,键 '6' 不存在) 再一次(3):
1 | 2
2 | 5
2 | 6
5 | 3
3 | 7
对于 (7) 什么都没有,因为 Col1 中不存在值“7”。
这是一个简单的递归,但我不知道如何实现它。到目前为止,我得到了这样的东西:
with recursive aaa(params) as (
select Col1, Col2
from MyTable
where Col1 = params -- I need an array here
union all
select Col1, Col2
from aaa
)
select * from aaa;
当然不行
提前致谢
【问题讨论】:
标签: arrays postgresql select recursion