【发布时间】:2017-05-16 16:05:39
【问题描述】:
我正在尝试创建一个函数,该函数将一个表和可变数量的列作为参数,然后返回一个没有在所有这些列上有重复的行的表。我试图弄清楚如何将可变数量的列作为参数,并且我已经收集到我可能需要一个 VARIADIC 参数,但我不确定如何实现它。到目前为止我所拥有的:
CREATE FUNCTION remove_duplicates(orig_table, VARIADIC sel_columns column)
RETURNS table AS $$
SELECT * FROM
(SELECT *,
count(*) over (partition by sel_columns) AS count
FROM orig_table)
WHERE count = 1;
$$ LANGUAGE SQL;
例如,如果我有一个这样的表:
cola | colb | colc
-------------------
a | b | 1
a | b | 2
a | c | 3
a | d | 4
我想运行SELECT * FROM remove_duplicates(mytable, cola, colb) 并得到这个结果:
cola | colb | colc
-------------------
a | c | 3
a | d | 4
感谢您的帮助。我正在使用 postgresql 9.4.9
【问题讨论】:
标签: postgresql window-functions variadic-functions