Re: how to update table to make dup values distinct

Поиск
Список
Период
Сортировка
От Harald Fuchs
Тема Re: how to update table to make dup values distinct
Дата
Msg-id 871x1n5jwm.fsf@srv.protecting.net
обсуждение исходный текст
Ответ на how to update table to make dup values distinct  (george young <gry@ll.mit.edu>)
Список pgsql-sql
In article <20051110105818.4dc51e8c.gry@ll.mit.edu>,
george young <gry@ll.mit.edu> writes:

> [PostgreSQL 7.4RC2 on i686-pc-linux-gnu](I know, I know... must upgrade soon)
> I have a table mytable like:
>  i |  txt  
> ---+-------
>  1 | the
>  2 | the
>  3 | rain
>  4 | in
>  5 | mainly
>  6 | spain
>  7 | stays
>  8 | mainly
>  9 | in

> I want to update it, adding a ':' to txt so that each txt value is unique.
> I don't care which entry gets changed.  I tried:

>  update mytable set txt=mytable.txt || ':' from mytable t2 where mytable.txt=t2.txt and mytable.i=t2.i;

> but this updated both duplicated entries.  

> Um, there may sometimes be 3 or 4 duplicates, not just two.  For these, I can add multiple colons, or one each of an
assortmentof characters, say ':+*&^#'.
 

> Performance does not matter here.  The real table has 30K rows, ~200 dups.
> To clarify, I want to end up with something like:

>  1 | the
>  2 | the:
>  3 | rain
>  4 | in
>  5 | mainly:
>  6 | spain
>  7 | stays
>  8 | mainly
>  9 | in:

Try the following:
 UPDATE mytable SET txt = txt || substring ('::::::::::::::::' for (     SELECT count(*)     FROM mytable t1     WHERE
t1.txt= mytable.txt AND t1.i < mytable.i   )::int)
 



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

Предыдущее
От: "Joel Fradkin"
Дата:
Сообщение: Re: High level discussion for design of using ACL to retrieve Data
Следующее
От: Frank Bax
Дата:
Сообщение: cli in sql?