Publicidade

Marcelo Kubart

Deletar registros com duplicidade

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

0

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

}	

?>

0

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.

0

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?

0

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!


Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.


Entrar Agora

  • Próximos Eventos