Сконкатенировать два массива - DISTINCT

From: "Dmitry E(dot) Oboukhov" <unera(at)debian(dot)org>
To: pgsql-ru-general(at)postgresql(dot)org
Subject: Сконкатенировать два массива - DISTINCT
Date: 2013-09-01 10:30:44
Message-ID: 20130901103044.GD20873@vdsl.uvw.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-ru-general

есть записи в табличке

name: TEXT
tags: TEXT[]

приходит апдейт с новыми тегами

UPDATE
table
SET
tags = tags || ARRAY['newtag1', 'newtag2', 'newtag3']
WHERE
name = 'вася'

или, что тоже самое:

UPDATE
table
SET
tags = array_cat(tags, ARRAY['newtag1', 'newtag2', 'newtag3'])
WHERE
name = 'вася'

Вопрос, как *просто* удерживать список тегов в уникальном состоянии?

то есть если из новых тегов, скажем newtag2 уже есть в tags, то
newtag2 бы не добавился в список?

Понятно что можно сваять секцию WITH

WITH newtags (
SELECT
DISTINCT
unnest(tags || ARRAY['newtag1', 'newtag2', 'newtag3']) AS "tag"
FROM
table
WHERE
name = 'вася'
)

и потом их назад сагрегировать, но это что-то довольно сложное
получается.

--

. ''`. Dmitry E. Oboukhov
: :’ : email: unera(at)debian(dot)org jabber://UNera(at)uvw(dot)ru
`. `~’ GPGKey: 1024D / F8E26537 2006-11-21
`- 1B23 D4F8 8EC0 D902 0555 E438 AB8C 00CF F8E2 6537

Responses

Browse pgsql-ru-general by date

  From Date Subject
Next Message Олексій Васильєв 2013-09-01 11:36:35 Re: [pgsql-ru-general] Сконкатенировать два массива - DISTINCT
Previous Message ciifrancesco@tiscali.it 2013-08-21 10:56:11 R: [pgsql-zh-general] (solved - 谢谢) Chinese in Postgres