Deletando registro duplicado com 4 campos iguais - Firebid

06/02/2015

0

Olá Pessoal!

Uso Banco Firebird 2.5 e estou precisando excluir registros duplicados na tabela MOV_MOVIMENTOS que estejam na seguinte condição:

excluir registros com os campos duplicados (SOCIO_COD, LANC_COD, MODO_RECEB_COD, MES) e que tenham a data mais recente.
Obs: tenho na tabela o campo ID pra identificar os registros e o campo DATA_REG para identificar a data do registro.


Agradeço quem puder me da uma ajuda!

Obrigado.
Marcos Roberto

Marcos Roberto

Responder

Post mais votado

07/02/2015

Vamos lá.. Primeiro vocÊ selecione os registros duplicados e depois manda o ID deles para o DELETE. Se você usa o gerador de sequence do próprio banco (ID), então você pode usar o próprio ID para identificar quem é o mais recente e deletar, não precisa da data.

DELETE FROM MOV_MOVIMENTOS where ID in(
SELECT max(id) FROM MOV_MOVIMENTOS mm 
GROUP BY mm.socic_cod, mm.lanc_cod, mm.modo_receb_cod, mm.mes
HAVING count(*) > 1)

Ronaldo Lanhellas

Ronaldo Lanhellas
Responder

Mais Posts

07/02/2015

Ronaldo Lanhellas

Vamos lá.. Primeiro vocÊ selecione os registros duplicados e depois manda o ID deles para o DELETE. Se você usa o gerador de sequence do próprio banco (ID), então você pode usar o próprio ID para identificar quem é o mais recente e deletar, não precisa da data.

DELETE FROM MOV_MOVIMENTOS where ID in(
SELECT max(id) FROM MOV_MOVIMENTOS mm 
GROUP BY mm.socic_cod, mm.lanc_cod, mm.modo_receb_cod, mm.mes
HAVING count(*) > 1)
Responder

23/04/2015

Marcos Roberto

Olá Ronaldo!

pow cara eu não recebi a notificação que vc respondeu o post, só vi agora...

Eu testei aqui e deu certo , puts quebrou maior galho muito obrigado!!
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar