Deletar Registros Duplicados
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
Curtidas 0
Respostas
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)
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
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