Inquiridor
Exclusao de duplicidade em uma TABELA

Pergunta
-
Pessoal bom dia,
Tenho uma tabela no sql que estou com alguns registros em duplicidades, como faco para excluir pois sao colunas iguais,
tipo :
id_conta
id_conta_auxiliar codigo_tele mes_referencia valor_total qtde_lancamentos tipo_conta dia_vencimento uf 149000 NULL 455 jan/19 12324,44 0 1 19 AC 149000 NULL 455 jan/19 12324,44 0 1 19 AC valeu pela ajuda.
Todas as Respostas
-
Boa tarde,
Tente assim:
with CTE_DUPLICIDADE as ( select id_conta , ROW_NUMBER() OVER(PARTITION BY id_conta ORDER BY id_conta DESC) as RN -- Função ROW_NUMBER CRIA UMA NUMERAÇÃO PARA CADA REC QUE SE REPETE from SuaTabela ) DELETE from CTE_DUPLICIDADE where RN > 1
- Sugerido como Resposta Junior Galvão - MVPMVP quarta-feira, 31 de março de 2021 17:08
-
Dr.Khan,
Eu pensei em uma outra possibilidade, utilizar o comando Delete em conjunto com uma Subquery:
Delete From SuaTabela Where Id_Conta In (Select Id_Conta From SuaTabela Group By Id_Conta Having Count(Id_Conta) >1) Go
Enfatizo que o uso de CTE é uma ótima solução e prática, ainda mais dependendo do volume de dados, poderemos ter melhores resultados nas questões de performance.
Seguindo nesta mesma linha de raciocínio, apresento um outro exemplo, que combina justamente o uso de CTE com o comando Delete e Subquery:
;With CTE_ItensRepetidos (CodigoRepetido) As ( Select Id_Conta From SuaTabela Group By Id_Conta Having Count(Id_Conta) >1 ) Delete From SuaTabela Where Id_Conta In (Select CodigoRepetido From CTE_ItensRepetidos) Go
Peço que analise, verifique as possibilidades.
Pedro Antonio Galvão Junior [MVP | MCC | MSTC | MIE | MTAC | Microsoft Evangelist | Microsoft Partner | Engenheiro de Softwares | Especialista em Banco de Dados Relacional e Data Warehouse | Professor Universitário | @JuniorGalvaoMVP | http://pedrogalvaojunior.wordpress.com]
-