Doppelte Einträge entfernen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Doppelte Einträge entfernen

    Hallo Wissende!

    Ich habe eine Datenbanktabelle, der sich mehr als 1200 Einträge befinden. Da ich diese nun bereinigen muss, habe ich vor, alle doppelten Einträge zu entfernen. Dazu möchte ich gern alle doppelt vorhanden EMail-Adressen des Feldes EMail finden und den Datensatz löschen.

    Ich kenne leider keinen derartigen SQL-Befehl.

    Wie kann ich das sinnvoll lösen?

    Danke Tom
    Danke
    Tom

  • #2
    - Erstelle eine Kopie der Tabelle (nur Struktur)
    - insert into tabelle2 select * from tabelle1 group by email
    - Tabelle 1 löschen
    - Tabelle 2 umbenennen
    fertig.
    mein Sport: mein Frühstück: meine Arbeit:

    Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

    Kommentar


    • #3
      oder so:

      http://www.heddesheimer.de/coaching/doppel.html

      Gruß Marian
      Online-Kurse die jeder versteht: HTML, PHP, MySQL, Word, Excel
      http://www.lernpilot.de/wbt/

      Kommentar


      • #4
        hier mal ne lösung
        PHP-Code:
        $tabelle "userinfos";  //tabellenname
        $spalte  "deb_name";   //spaltenname

        $query "select $spalte, count($spalte) as anzahl, 
            min(id) as dieser_nicht from 
        $tabelle 
            group by 
        $spalte having anzahl > 1 ";

        $result mysql_query($query);
        if(!
        $result) {echo mysql_error();}

        while(
        $row mysql_fetch_array($result))
        {
          
        $dieser_nicht $row['dieser_nicht'];
          
        $doublette $row[$spalte];
          
        $limit $row['anzahl'] - 1;

          echo 
        $row['anzahl']. " x " $doublette"<br>";

          
        $del " delete from $tabelle where email = '$doublette
              and id != '
        $dieser_nicht' limit $limit ";

          echo 
        $del ."<br>";


        //  Zur Ausführung der DELETE-Anweisung Kommentarzeichen entfernen!!!

          //$delete = mysql_query($del);
         // if(!$delete) {echo mysql_error();}
         //echo mysql_affected_rows(). " Datensätze gelöscht <br>";


        EDIT:
        Ist es denn so schwer seinen Code gemäß den Regeln zu posten?
        Zuletzt geändert von TobiaZ; 05.10.2005, 10:20.
        Die wenigsten Fehltritte begeht man mit den Füssen.

        Kommentar


        • #5
          Jaa, die letzte Antwort hat wirklich geholfen!

          Die erste Antwort sah ausschliesslich nach einer Kopie aus.
          Die zweite Antwort löschte gleich mal alle EMail-Adressen.
          Die dritte Antwort machte genau das, was ich wollte.

          Nun habe ich nur noch das Problem, dass nur die doppelten EMail-Einträge gelöscht werden dürfen, die keinen Namenseintrag haben. Das Feld heisst Name. Wie muss ich Deine Prozedur nun erweitern, um dies zu erreichen?
          Danke
          Tom

          Kommentar


          • #6
            AND Name = ""

            Kommentar


            • #7
              geht da auch AND Name>""

              ???

              Ich probiers einfach aus! Danke!
              Danke
              Tom

              Kommentar


              • #8
                Das wäre zum einen das gegenteil und zum anderen eine eher unübliche schreibweise.

                Kommentar


                • #9
                  Die erste Antwort sah ausschliesslich nach einer Kopie aus.
                  lese dir erstmal im manual den befehl [COLOR=red]group by[/COLOR] durch und dann überdenke deine antwort nochmal. das war die einfachste lösung von allen, verständlich und leicht umsetzbar. ich glaube ehrlich gesagt nicht, dass du alles in dem geposteten quelltext verstehst und ihn einfach nur übernommen hast. aber dein ding.
                  ich geh zum lachen in den keller

                  Kommentar

                  Lädt...
                  X