Re: Re: Аналог distinct для массива
От | Oleg Bartunov |
---|---|
Тема | Re: Re: Аналог distinct для массива |
Дата | |
Msg-id | Pine.LNX.4.64.0802211938510.31180@sn.sai.msu.ru обсуждение исходный текст |
Ответ на | Re: Аналог distinct для массива (Dmitriy MiksIr <miksir@maker.ru>) |
Ответы |
Re: Аналог distinct для массива
|
Список | pgsql-ru-general |
On Thu, 21 Feb 2008, Dmitriy MiksIr wrote: > Да, но того что может помочь не нашел. Может смотрел не туда. там есть функция uniq > > Единственная идея, что появилась - это сложить как-то все массивы по строкам, > и на итоговый сказать 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 >> > > > ---------------------------(end of broadcast)--------------------------- > TIP 6: explain analyze is your friend > 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
В списке pgsql-ru-general по дате отправления: