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 по дате отправления: