النتائج 1 إلى 2 من 2

الموضوع: حذف السجلات المكررة في قاعدة البيانات ببساطة

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Nov 2003
    المشاركات
    127

    حذف السجلات المكررة في قاعدة البيانات ببساطة



    السلام عليكم

    في حال كانت لديك قاعدة بيانات لإميلات وتود حذف الإميلات المكررة وترك واحد

    تخيل لو لديك 2 مليون إميل !!!

    بهذا السطر في في SQL phpMyAdmin
    تستطيع عمل ذلك

    كود:
    CREATE TABLE emails_temp AS SELECT email FROM users WHERE 1 GROUP BY email;
    emails_temp = اسم الجدول الجديد
    email = اسم حقل الإميل في قاعدة البيانات القديمة
    users = اسم جدول الاعضاء والذي يحتوي على الإميلات







  2. #2
    عضو نشيط
    تاريخ التسجيل
    Nov 2003
    المشاركات
    127


    لكم بعض الحلول الأخرى

    كود 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($id0, -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$i2id); 
        
    $email=mysql_result($result$i2email); 
        while(
    $i $numrows
        { 
            
    $idcompare=mysql_result($result$iid); 
            
    $emailcompare=mysql_result($result$iemail); 
            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++; 












ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض