Fórum Eliminar itens repetidos da tabela #367432

30/12/2008

0

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

Responder

Posts

30/12/2008

Pestana_

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!


Responder

Gostei + 0

30/12/2008

Robsonr

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


Responder

Gostei + 0

30/12/2008

Pestana_

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.


Responder

Gostei + 0

30/12/2008

Pestana_

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.


Responder

Gostei + 0

02/01/2009

Robsonr

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


Responder

Gostei + 0

02/01/2009

Pestana_

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´);



Responder

Gostei + 0

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

Aceitar