Rodrigo1 0 Denunciar post Postado Agosto 4, 2008 Ae galera... Será que alguem pode me explicar esse codigo? Peguei na net em busca de algo para retirar registros duplicados do BD 1.Select para localizar duplicados select campo,campo1,count(*) from tabela having count(*) > 1 group by campo,campo1 2.Como deletar duplicados delete from tab p1 where rowid < (select max(rowid) from tab1 p2 where p1.primary_key = p2.primary_key); Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 4, 2008 hummmm pelo o que entendi... no 1º: verifica quais são os registros com mais de uma ocorrência de acordo com o grupo. ex: verificar quantos registros existem para um nome e sobre, desde que encontre mais de uma ocorrência. na prática. tabela usuários id nome sobrenome 1 Maria Carla 2 Maria Carla 3 Henrique Jose 4 João Silva 5 Jorge Carlos 6 João Silva 7 João SilvaO resultado da consulta seria algo assim nome sobrenome count(*) Maria Carla 2 João Silva 3a consulta ficaria assim caso a tabela fosse 'pessoas': select nome,sobrenome,count(*) from pessoas group by nome,sobrenome having count(*) > 1 a consulta original está com um erro de sintaxe, o having vem depois do group by. Assim sabe-se que são os duplicados. já o 2º: pelo visto ele está consultando o maior ID de determinado campo, e excluindo os menores daquela chave primária (ou que deveria ser). pode usar como exemplo dos nomes. deve ficar assim pro exemplo: delete from tab p1 where id < (select max(id) from tab1 p2 where p1.nome = p2.nome and p1.sobrenome = p2.sobrenome); mas não sei não... este 2º deve estar faltando algo... p/ mim vai remover registros que não deveria, e além disso está dando erro: You can't specify target table 'p1' for update in FROM clausenum teste que fiz aqui... Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo1 0 Denunciar post Postado Agosto 4, 2008 é..eu nem testei com medo cara! mais o que eu quero deletar é sao emails duplicados, as vezes o registro duplicado nao tem nome, dai com ese select nao acharia duplicidade certo? Compartilhar este post Link para o post Compartilhar em outros sites
Rodrigo1 0 Denunciar post Postado Agosto 4, 2008 Mais nao to conseguindo! gravar a store procedure Compartilhar este post Link para o post Compartilhar em outros sites
cassitos 2 Denunciar post Postado Agosto 4, 2008 é..eu nem testei com medo cara! mais o que eu quero deletar é sao emails duplicados, as vezes o registro duplicado nao tem nome, dai com ese select nao acharia duplicidade certo? este select foi só um exemplo... faz o seguinte, posta lá no outro tópico a estrutura da tabela que estão os registros duplicados. talvez ajude mais na montagem da consulta. se você não conseguir usar stored procedure, então talvez seja melhor adaptar a lógica e usar no PHP ou outra linguagem que esteja utilizando.... senão vamos ficar respondendo em 2 tópicos praticamente 'iguais'. Compartilhar este post Link para o post Compartilhar em outros sites
ska_ska 0 Denunciar post Postado Agosto 4, 2008 uma dica http://forum.imasters.com.br/index.php?showtopic=297098 Compartilhar este post Link para o post Compartilhar em outros sites