Deletar Registros Duplicados

Delphi

23/07/2010

Pessoal tenho uma tabela com a extrutura abaixo:   Tabela: PACIENTES   COD - PRIMARY KEY NOME DATANASC CARTAO   Minha tabela está com vários registros duplicados, preciso deletar os registros duplicados (os dados duplicados são o NOME e DATANASC), mas tem um porém, deixar no banco somente o campo CARTAO que possui o menor valor.   Lembrando que o meu banco de dados é Firebird, estou utilizando o Delphi 7 com DBExpress e ClientDataSet na minha aplicação.   Aguardo a ajuda. Grato.
Lucas Souza

Lucas Souza

Curtidas 0

Respostas

Emerson Nascimento

Emerson Nascimento

23/07/2010

delete from pacientes
where cartao > (select min(p2.cartao) from pacientes p2
                where p2.nome = pacientes.nome and p2.datanasc = pacientes.datanasc)


para verificar se o resultado será o esperado, faça um select antes:

select * from pacientes
where cartao > (select min(p2.cartao) from pacientes p2
                where p2.nome = pacientes.nome and p2.datanasc = pacientes.datanasc)


GOSTEI 0
Lucas Souza

Lucas Souza

23/07/2010

Perfeito Emerson   Era isso mesmo que eu precisava, faço esse procedimento pelo IBExpert, funciona normalmente, como faço para colocar o mesmo select e delete no Delphi utilizando uma Progressbar? Uso DBExpress, ClientDataSet com firebird. GRato pelo ajuda!!
GOSTEI 0
POSTAR