doppelte einträge in db löschen

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

  • doppelte einträge in db löschen

    hallo,
    wie kann ich doppelte einträge in einer tabelle löschen. gibt es dafür eine einfachere methode als alle datensätze mit GROUP BY auszulesen und in eine neue tabelle zu schreiben? vielleicht eine mysql anweisung?

    danke

  • #2
    hmm,

    wenn du irgendwas mit GROUP BY aussortierst, warum machst du dann nicht DELETE ...... WHERE ..... und die GROUP BY Bedingung ins WHERE ?

    Kommentar


    • #3
      Steh gerade vor einem ähnlichen Problem. Hab eine Datenbank in der ich Anmeldungen speichere.
      Da es z.B. 4 Einträge mit der gleichen E-Mailadresse gibt möchte, ich 3 löschen, so dass immer nur ein Datensatz mit dieser E-Mailadresse in der DB ist.
      Gibt es dafür eine einfach Möglichkeit, oder muss ich die Tabelle mit DISTINC auslesen, in eine neue Tabelle schreiben und dann wieder rückschreiben?

      Kommentar


      • #4
        Man sollte soetwas schon vorher verhindern, indem man Abfragen auf das Schonvorhandensein vor dem Eintragen einbaut oder gleich mit UNIQUE arbeitet.

        Kommentar


        • #5
          Das bringt mich jetzt auch nicht weiter
          Es gibt nurn einmal doppelte Einträge und die würde ich gerne löschen.

          Kommentar


          • #6
            Original geschrieben von Viktor M.
            Das bringt mich jetzt auch nicht weiter
            Es gibt nurn einmal doppelte Einträge und die würde ich gerne löschen.
            Dann mach' es bei zukünftigen Projekten so.
            Und was Deine Einträge betrifft, wirst Du wohl Zeile für Zeile abarbeiten müssen, sofern Du keine neue Tabelle erstellen möchtest.

            Kommentar


            • #7
              Hab nen Skript gefunden.

              Falls jemand mal vor nem ähnlichen Problem steht....
              PHP-Code:
              <?php

              //
              // Doppelte Einträge aus DB-Tabelle löschen
              // ========================================

              echo "***************************************************************<br>";

              $tabelle "name_der_tabelle";
              $spalte  "name_der_spalte_mit_doppelten_Eintägen";

              // Der Datensatz mit der jeweils kleinsten ID  ~ min(id) as dieser_nicht ~
              // soll nicht gelöscht werden ! (Bei Bedarf ändern !!!)


              $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 name = '
              $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>";

              }

              echo 
              "***************************************************************<br>";
              // ==========================================================================

              ?>

              Kommentar


              • #8
                Also Ich hab auch so ein Problem nur komm ich damit net ganz klar Ich möchte von der GANZEN Tabelle alle einträge die mehr als einmal drinstehn löschen so das in jeder Spallte von jedem nurnoch 1 drinsteht so das keine spallte mehr doppelt dreifach oder vierfach etc. drin ist:

                Beispiel

                Datenbank: web**_keineahnung_nixweiß

                Von allen Tabellen die dopellte spalten haben suchen und die dopellten spalten löschen.

                Beispiel
                ____________________
                | userid| name |userip |
                | 2 | horst |127.0.0.1 |
                ------------------------------------
                | userid| name |userip |
                | 2 | horst |127.0.0.1 |
                ------------------------------------
                | userid| name |userip |
                | 2 | horst |127.0.0.1 |
                ------------------------------------
                | userid| name |userip |
                | 2 | horst |127.0.0.1 |
                ------------------------------------

                Die unteren 3 müssen weg. Ja löschen kann ich nur sind die alle durcheinander und viel zu viele.

                Kommentar

                Lädt...
                X