quinta-feira, 24 de junho de 2010

MySQL Duplicidade - Achar e Apagar - Duplicated data - find and erase



Para achar quantos itens estão duplicados em uma coluna MySQL:

SELECT CAMPO_DESEJADO, COUNT( * )
FROM TABELA_DESEJADA
GROUP BY CAMPO_DESEJADO
HAVING COUNT( * ) >1


Para apagar os dados que estão em duplicidade, escolha um campo chave, no meu caso é o campo email:

ALTER IGNORE TABLE `tabela_desejada` ADD UNIQUE INDEX(email)

Lembre-se que depois desse comando o campo e-mail não vai mais permitir cadastros em duplicidade

Criando um rotina em PHP e deixando apenas um item - PHP routine and leave only one item

<?php
include_once "CONN.php";

$q="SELECT email, COUNT( * ) as counter FROM TABLE GROUP BY email HAVING COUNT( * ) >1";
$r=$pdo->prepare($q);
$r->execute();
$a=0;
while ($l=$r->fetch()) :
 $conta=0;
 $contador=0;
 $contador=$l[1];
 $conta=$contador-1;
 $d=$pdo->prepare("delete from TABLE where email='$l[0]'  limit $conta");
 if ($d->execute()) $a++;
endwhile;

echo "apagados $a e-mails";
?>

Um comentário:

  1. Bacana Luis, sou estudandte de Sistemas de informação, estou seguindo seu blog e coloquei um link para ele no meu(http://redeserrossoeprogramacao.blogspot.com/), falou, obrigado.

    ResponderExcluir

Linux bash file returns unexpected token `$'do\r''

open file in vi edit with   vi filename.sh   command; type in vi  :set ff=unix  command; save file with  :wq It will save the file with unix...