Re: Аналог distinct для массива

Поиск
Список
Период
Сортировка
От Dmitriy MiksIr
Тема Re: Аналог distinct для массива
Дата
Msg-id fpk1mb$5su$1@ger.gmane.org
обсуждение исходный текст
Ответ на Re: Аналог distinct для массива  (Oleg Bartunov <oleg@sai.msu.su>)
Ответы Re: Re: Аналог distinct для массива
Список pgsql-ru-general
Да, но того что может помочь не нашел. Может смотрел не туда.

Единственная идея, что появилась - это сложить как-то все массивы по
строкам, и на итоговый сказать uniq ... но красивая реализация в голову
не идет.

Или написать функцию, которая будет раскрывать масив и выдавать
результат как набор строк, т.е.
arr     | other
[1,2,3] | bla
преобразовывать в
1 | bla
2 | bla
3 | bla
только можно ли силами plpgsql пройтись циклом по массиву?

Oleg Bartunov пишет:
> Если это integer arrays, то есть
> http://www.sai.msu.su/~megera/postgres/gist/intarray/README.intarray
> Заодно получишь много чего приятного :)
>
> Олег
> On Thu, 21 Feb 2008, Dmitriy MiksIr wrote:
>
>>
>>  Приветствую!
>>
>>  Есть необходимость выбирать уникальные значения из всей таблицы по
>> полю integer[] (уникальные как по строкам, так и по массиву). Делаю
>> сейчас это так (кусок функции):
>> SELECT max(array_upper(marks,1)) INTO size FROM firms WHERE ...;
>> FOR resrow IN
>>   SELECT distinct(f.marks[g.n]) as result
>>     FROM firms f, generate_series(1,size) g(n) WHERE ...;
>> ...
>> Не очень нравится такое решение своей красотой (ибо если, например,
>> одна строка - 100 элементов массива, а остальные - по 2-3, получается
>> очень накладно). Может есть другие решения?
>>
>>
>> ---------------------------(end of broadcast)---------------------------
>> TIP 3: Have you checked our extensive FAQ?
>>
>>              http://www.postgresql.org/docs/faq
>>
>
>     Regards,
>         Oleg
> _____________________________________________________________
> Oleg Bartunov, Research Scientist, Head of AstroNet (www.astronet.ru),
> Sternberg Astronomical Institute, Moscow University, Russia
> Internet: oleg@sai.msu.su,
> http://www.sai.msu.su/~megera/
> phone: +007(495)939-16-83, +007(495)939-23-83
> ---------------------------(end of broadcast)---------------------------
> TIP 9: In versions below 8.0, the planner will ignore your desire to
>       choose an index scan if your joining column's datatypes do not
>       match
>

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

Предыдущее
От: Oleg Bartunov
Дата:
Сообщение: Re: Аналог distinct для массива
Следующее
От: Oleg Bartunov
Дата:
Сообщение: Re: Re: Аналог distinct для массива