Eliminar itens repetidos da tabela

Delphi

30/12/2008

Tenho uma table onde importei varios dados de outro banco, e nesse banco tinha varios registros repetidos (por ex: com o mesmo código), gostaria de saber se tem como eu eliminar os registros repetidos mais antigos, ou selecionar somente os itens que são repetidos para depois exclui-los, pois essa table tem mais de 30.000 registros

Uso o Delphi2006, zeos, mysql 5.0


Robsonr

Robsonr

Curtidas 0

Respostas

Pestana_

Pestana_

30/12/2008

sim isso é possivel!

você é assinante da revista SQL Magazinei? porque na edição 48 ([i:77a2f92a78]Desafio SQL Magazine[/i:77a2f92a78] do autor [i:77a2f92a78]Wagner Crivelini[/i:77a2f92a78]) tem um exemplo ensinando exatamente o que você quer, vale a pena dar uma olhada!

boa sorte!


GOSTEI 0
Robsonr

Robsonr

30/12/2008

Pestana

Infelizmente eu naum sou assinante, mas pretendo assinar em breve, mais será q alguém tem alguma solução pra mim, pois estou com um pouco de urgencia

obrigado


GOSTEI 0
Pestana_

Pestana_

30/12/2008

bom eu posso passar essa solução pra você, mas eu não tenho em mente e agora estou sem tempo!

se ninguem postar a noite eu passo pra você!


flw.


GOSTEI 0
Pestana_

Pestana_

30/12/2008

bom eu posso passar essa solução pra você, mas eu não tenho em mente e agora estou sem tempo!

se ninguem postar a noite eu passo pra você!


flw.


GOSTEI 0
Robsonr

Robsonr

30/12/2008

Por favor alguém tem a solução para o meu problema???


GOSTEI 0
Pestana_

Pestana_

30/12/2008

desculpe, não tive tempo de postar antes!


Para deletar registros repetidos de uma tabela:

estrutura da tabela:
create table tabela (
id integer not null,
nome varchar(10),
constraint pk_tabela primary key (id));


dados da tabela:
insert into tabela (id, nome) values (1, ´maria´);
insert into tabela (id, nome) values (2, ´jose´);
insert into tabela (id, nome) values (3, ´beatriz´);
insert into tabela (id, nome) values (4, ´joaquim´);
insert into tabela (id, nome) values (5, ´maria´);
insert into tabela (id, nome) values (6, ´maria´);
insert into tabela (id, nome) values (7, ´beatriz´);
insert into tabela (id, nome) values (8, ´maria´);


delete
from tabela
where id in (select id
             from tabela t
             inner join (select nome, min(id) as codigo
                         from tabela
                         group by nome
                         having count(*) > 1) x
             on (t.nome = x.nome)
             where t.id > x.codigo)


os registros que permanecerão na tabela são estes:
insert into tabela (id, nome) values (1, ´maria´);
insert into tabela (id, nome) values (2, ´jose´);
insert into tabela (id, nome) values (3, ´beatriz´);
insert into tabela (id, nome) values (4, ´joaquim´);



GOSTEI 0
POSTAR