Deletando registro duplicado com 4 campos iguais - Firebid

Firebird

06/02/2015

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

Curtidas 0

Melhor post

Ronaldo Lanhellas

Ronaldo Lanhellas

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)
GOSTEI 2

Mais Respostas

Ronaldo Lanhellas

Ronaldo Lanhellas

06/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)
GOSTEI 0
Marcos Roberto

Marcos Roberto

06/02/2015

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!!
GOSTEI 0
POSTAR