Re: Delete ou Update em dois registros identicos

Flavio Henrique Araque Gurgel <[email protected]>
Newsgroups gmane.comp.db.postgresql.brasil
Message-ID <CAGHTAePHfiqTHejJPDaWy=5it6YEPDYy8gzkp1aeAs_SuWdYhA@mail.gmail.com>
Em seg, 16 de out de 2017 às 17:14, Flavio Henrique Araque Gurgel <
[email protected]> escreveu:

> Em seg, 16 de out de 2017 às 17:03, Edelson Regis de Lima <
> [email protected]> escreveu:
>
>> Olá pessoal.
>>
>> To com um problema que não sei se tem solução...
>>
>> Tem um cliente que tem um banco de dados com uma tabela com dois
>> registros identicos, e preciso dar um update ou um delete em um dos
>> registros, porém como todos os campos são iguais, ainda não achei uma
>> solução.
>>
>> Exmplo: tenho a minha_tabela, com as colunas col_a e col_b. Nessa tabela
>> tem dois registros identicos:
>>
>> col_a | col_B
>>
>> aaa | bbb
>>
>> aaa | bbb
>>
>> Eu gostaria de apagar a linha dois por exemplo, ou dar um update mudando
>> as informações para ccc | ddd.
>>
>> Já vi o uso do ROW_NUMBER () OVER (ORDER BY id), porém só achei exemplos
>> que funcionasse com o SELECT.
>>
>> Já tentei:
>>
>> UPDATE minha_tabela SET col_a = 'ccc', col_b = 'ddd' where col_a = 'aaa'
>> and col_b = 'bbb' and ROW_NUMBER () OVER (ORDER BY id) = 2;
>>
>> Porém dá: ERROR:  cannot use window function in UPDATE
>>
>> Alguém teria uma solução?
>>
> Tente com uma CTE:
>
> WITH results_to_delete AS
> ( SELECT max(id) AS id_to_delete,  col_a, col_b FROM sua_tabela HAVING
> count(id) > 1 GROUP BY 2, 3)
> DELETE FROM sua_tabela USING results_to_delete WHERE id = id_to_delete;
>

Esqueci de dizer, você pode mudar a parte do DELETE para UPDATE se
preferir, tente re-escrever com a lógica que deseja.

[]s
Flavio Gurgel

_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.