Removendo registros duplicados em uma tabela

Muitas vezes nos deparamos com a necessidade de remover registros duplicados em uma determinada tabela do Banco de Dados. No caso que vou compartilhar com vocês comparamos os registros mantendo apenas o registro mais antigo na base.

Considerando

SCHEMA_NAME: Nome do seu Schema no banco de dados;
TABLE_NAME: Nome da tabela onde temos os registros duplicados;
CAMPO_A_TIMESTAMP: Campo (DATE ou TIMESTAMP) que iremos utilizar de parâmetro para verificar qual o registro mais antigo;
CHAVE: Campo que indica o numero do registro duplicado (código do produto, numero do incidente, …);

Temo o seguinte SQL

DELETE
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> A
WHERE
<strong>CAMPO_A_TIMESTAMP</strong> &gt;
(SELECT MIN(<strong>CAMPO_A_TIMESTAMP</strong>)
FROM <strong>SCHEMA_NAME</strong>.<strong>TABLE_NAME</strong> B
WHERE A.<strong>CHAVE</strong> = B.<strong>CHAVE</strong>)

Espero que a dica tenha sido útil, caso tenham alguma dúvida é só deixar um comentário. Obrigado.

Deixe uma resposta

O seu endereço de email não será publicado Campos obrigatórios são marcados *

Você pode usar estas tags e atributos de HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>