我尝试了以下操作:
SELECT tags FROM articles WHERE id = 1;
=> {news,new}
UPDATE articles SET tags = uniq(array_cat(tags, '{new,trendy,latest}')) WHERE id = 1;
=> [1]
SELECT tags FROM articles WHERE id = 1;
=> {news,new,trendy,latest}
但是在UPDATE命令中,我得到了:
ERROR: function uniq(text[]) does not exist
现在有一种方法可以仅在一个UPDATE命令中添加不存在的标签吗?
感谢您的帮助!
编辑:
我想一个解决方案可能是为每个单独的标签迭代更新,添加一个where约束,例如:
WHERE NOT ('tag-name' = ANY(tags))
但我想知道我们能否一次完成。
EDIT2:
找到了这个https://grokbase.com/t/postgresql/pgsql-general/083k9e85rb/array-cat-without-duplicity,但遍历每个标签似乎更加复杂。
答案 0 :(得分:0)
发现了两种方法:
UPDATE articles SET tags = ARRAY(SELECT unnest(tags) UNION SELECT unnest(ARRAY['new', 'trendy', 'latest'])) WHERE id = 1;
或:
UPDATE articles SET tags = ARRAY(SELECT DISTINCT unnest(array_cat(tags, '{new,trendy,latest}'))) WHERE id = 673738;
还不会标记为已接受答案。随时发布您的解决方案。谢谢! :-)