From: | Олексій Васильєв <leopard_ne(at)inbox(dot)ru> |
---|---|
To: | Dmitry E(dot) Oboukhov <unera(at)debian(dot)org> |
Cc: | pgsql-ru-general(at)postgresql(dot)org |
Subject: | Re: [pgsql-ru-general] Сконкатенировать два массива - DISTINCT |
Date: | 2013-09-01 11:36:35 |
Message-ID: | 1378035395.622408124@f326.i.mail.ru |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-ru-general |
Как насчет модуля http://www.postgresql.org/docs/9.1/static/intarray.html с функцией uniq ?
Воскресенье, 1 сентября 2013, 14:30 +04:00 от "Dmitry E. Oboukhov" <unera(at)debian(dot)org>:
>есть записи в табличке
>
>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 | Dmitry E. Oboukhov | 2013-09-01 12:17:34 | Re: Re: [pgsql-ru-general] Сконкатенировать два массива - DISTINCT |
Previous Message | Dmitry E. Oboukhov | 2013-09-01 10:30:44 | Сконкатенировать два массива - DISTINCT |