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
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 |