لكم بعض الحلول الأخرى
كود PHP:
$sql = "SELECT id,count(email) as etot FROM emails group by email having etot > 1";
$result = mysql_query( $sql );while( $row = mysql_fetch_array( $result ) ) {
$id.= $row["id"].',';
//$delem = "delete from emails where id = '".$row["id"]."'"; $delquery = mysql_query($delem);
}
$id=substr($id, 0, -1);
$delem = "delete from emails where id in ($id)"; $delquery = mysql_query($delem);
كود PHP:
function RemoveDuplicates($TableName, $UniqueFieldName, $IDFieldName, $FirstFoundIDValue)
{
$Query = "DELETE FROM ".$TableName.
" WHERE ".$IDFieldName." IN ".
"( SELECT a.".$IDFieldName." FROM ".$TableName." a, ".$TableName." b
WHERE (a.".$UniqueFieldName." = b.".$UniqueFieldName.") AND (a.".$IDFieldName." > ".$FirstFoundIDValue.")
GROUP BY a.".$IDFieldName."
HAVING COUNT(a.".$UniqueFieldName.") > 1
)";
// Example Use:
//delete from tblps_CommEquip where PSID in ( select a.PSID from tblps_CommEquip a, tblps_CommEquip b where (a.CommEquipType = b.CommEquipType) AND (a.PSID > 80)
// group by a.PSID having count(a.CommEquipType) > 1)
db_query($Query);
}
كود PHP:
$query="SELECT * FROM `emails` ORDER BY `email` ASC LIMIT 0, 30";
mysql_query($query);
$result=mysql_query($query);
$numrows=mysql_num_rows($result);
$totalemailsdeleted=0;
$i=1;
$i2=0;
while($i2 < $numrows)
{
$id=mysql_result($result, $i2, id);
$email=mysql_result($result, $i2, email);
while($i < $numrows)
{
$idcompare=mysql_result($result, $i, id);
$emailcompare=mysql_result($result, $i, email);
if($emailcompare == $email)
{
$query="DELETE FROM `emails` WHERE `id` = '$idcompare' LIMIT 1";
mysql_query($query);
$emailsdeleted.="$emailcompare<br>";
$totalemailsdeleted++;
$numrows=mysql_num_rows($result);
}
else
{
}
$i++;
}
$i2++;
}