更新PostgreSQL数组列 - 避免重复值

时间:2014-04-02 09:18:59

标签: sql postgresql

我有一个integer[]列,我想更新此列,但避免在数组中有重复的条目。

示例:第一个[123]是值。 下次我要添加234。这里array_append()运行正常。但它不应该允许再次添加123

所以我的问题是:只有当数组中的项目不存在时,如何才能将值附加到数组中。

2 个答案:

答案 0 :(得分:2)

对于整数数组,您可以use the intarray extension's uniq function

CREATE EXTENSION intarray;

UPDATE thetable SET thecol = uniq(array_append(thecol, 32)) WHERE ...

答案 1 :(得分:0)

伪代码:

UPDATE "my_table"
   SET "int_array" = array_append("int_array", :element_to_insert)
 WHERE :some_filters
   AND :element_to_insert <> ALL ("int_array")

更多可能性:

http://www.postgresql.org/docs/9.3/static/functions-array.html http://www.postgresql.org/docs/9.3/static/functions-comparisons.html