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

Поиск
Список
Период
Сортировка
От Dmitry E. Oboukhov
Тема Сконкатенировать два массива - DISTINCT
Дата
Msg-id 20130901103044.GD20873@vdsl.uvw.ru
обсуждение исходный текст
Список 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@debian.org jabber://UNera@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Вложения

В списке pgsql-ru-general по дате отправления:

Предыдущее
От: "ciifrancesco@tiscali.it"
Дата:
Сообщение: R: [pgsql-zh-general] (solved - 谢谢) Chinese in Postgres
Следующее
От: Олексій Васильєв
Дата:
Сообщение: Re: [pgsql-ru-general] Сконкатенировать два массива - DISTINCT