Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Marcelo Kubart

Deletar registros com duplicidade

Recommended Posts

Olá Amigos,

 

Preciso excluir da tabela alguns registros duplicados no campo email

 

vocês sabem a sql pra mim fazer isso?

 

Achei esse código na net mas não rolou:

 

delete from tab p1
  where rowid < (select max(rowid)
                   from tab1 p2
                  where p1.primary_key = p2.primary_key);

 

Obrigado

Marcelo Kubart

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você ainda usa PHP, isso deve resolver. Só alterar onde está coluna e tabela....

 

<?php

$sql = mysql_query("SELECT coluna, COUNT(*) quant FROM tabela GROUP BY coluna HAVING quant > 1") or die(mysql_error());	

while ($rs = mysql_fetch_assoc($sql)) {	

extract($rs);	
$quant--;	

mysql_query("DELETE FROM tabela WHERE coluna ='{$coluna}' LIMIT {$quant}") or die(mysql_error());	

}	

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basta você alterar sua tabela e fazer com que o campo email seja UNIQUE INDEX, assim os valores repetidos serão excluidos e não serão mais ser aceitos.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você ainda usa PHP, isso deve resolver. Só alterar onde está coluna e tabela....

 

<?php

$sql = mysql_query("SELECT coluna, COUNT(*) quant FROM tabela GROUP BY coluna HAVING quant > 1") or die(mysql_error());	

while ($rs = mysql_fetch_assoc($sql)) {	

extract($rs);	
$quant--;	

mysql_query("DELETE FROM tabela WHERE coluna ='{$coluna}' LIMIT {$quant}") or die(mysql_error());	

}	

?>

 

Então fiz oque você falou mas não deu certo

 

<?
//fiz as conexões

$hostname_valerun = "*******";
$database_valerun = "******";
$username_valerun = "******";
$password_valerun = "*********";
$valerun = mysql_pconnect($hostname_valerun, $username_valerun, $password_valerun) or trigger_error(mysql_error(),E_USER_ERROR);
mysql_select_db($database_valerun, $valerun);
$sql = "SELECT email, COUNT(*) quant FROM email_mkt GROUP BY email HAVING quant > 1"; 
$record = mysql_query($sql, $valerun) or die(mysql_error());
while ($rs = mysql_fetch_assoc($record)) { 
       extract($rs);   
       $quant--;
	$del = "DELETE FROM email_mkt WHERE email ='".$rs["email"]."' LIMIT ".$quant;
       mysql_query($sql, $valerun) or die(mysql_error());       
}       

?> 

 

Mas não deu certo

 

Valeu

 

Basta você alterar sua tabela e fazer com que o campo email seja UNIQUE INDEX, assim os valores repetidos serão excluidos e não serão mais ser aceitos.

 

No phpmyadmin tentei colocar index unique mas ele não me deixou por causa te ter dados duplicados

 

tem algum sql que faça isso a força?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.