Jeanette Kielei: MySQL Tabelle doppelte Einträge löschen...

Hallo,

ich habe eine Tabelle

CREATE TABLE r_data (
  trickid int(10) unsigned NOT NULL default '0',
  userid int(10) unsigned NOT NULL default '0',
  time int(10) unsigned NOT NULL default '0',
  KEY useridboardid (userid,boardid)
) TYPE=MyISAM;

und durch einen Unglücksfall diverse (20.000) Einträge genau doppelt drin :(

hat jemand einen guten Code um doppelte Einträge zu beseitigen?

sowas wie:
delete from r_data WHERE ??(SELECT ???)

  1. Holladiewaldfee,

    Du könntest eine zweite Tabelle mit gleicher Struktur anlegen, den "Primary Key" über alle Spalten zusammen anlegen und dann die Daten der alten Tabelle in die neue kopieren. Doppelte Einträge fliegen so mit einer Fehlermeldung raus. Dann die alte leeren und den Mist wieder zurückkopieren.

    Ciao,

    Harry

    --
      Irgendwann kommt die Waldfee - oder auch nicht ... (Projektphase: Keine Ahnung)
      Bis dahin:
      Ski- und Bergtouren in den Tölzer Voralpen und im Karwendel
  2. Hello,

    CREATE TABLE r_data (
      trickid int(10) unsigned NOT NULL default '0',
      userid int(10) unsigned NOT NULL default '0',
      time int(10) unsigned NOT NULL default '0',
      KEY useridboardid (userid,boardid)
    ) TYPE=MyISAM;

    Ich kann keinen Primary Key entdecken.
    Der müsste ja mindestens ein UNIQUE aufweisen.

    Hast Du nun die Sätze genau doppelt drin, also auch die 'trickid', die bei Dir der Datensatzschlüssel zu sein scheint?

    MySQL kann zwar einen Select mit Selbstbezug durchführen, kann aber leider nicht mit (Multi-)Updates und Selbstbezug umgehen. Dazu müsste die gesamte Abfrage vorher als persistente Selection (Snapshot) genommen werden.

    Aber genau so kanst Du (wahrscheinlich) vorgehen.

    Create table temp_table select distinct * from r_data;

    "Wahrscheinlich" bezieht sich darauf, dass das Statement bei mir funktioniert, aber ich so schnell keine Musterdaten mit vollständigen Doubletten habe.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau
  3. Vielen Dank, ihr habt mir sehr geholfen!

    1. Hello,

      Vielen Dank, ihr habt mir sehr geholfen!

      Wie hast Du es den nun gelöst? Die Nachwelt (Archivbenutzer) werden es Dir danken.

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  4. Hello,

    bitte gib hier keine email-Adresse an, wenn sie nicht eingerichtet ist.
    Dann lass das Feld frei. Die Angabe ist ohnehin freiwillig.

    Harzliche Grüße aus http://www.annerschbarrich.de

    Tom

    --
    Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
    Nur selber lernen macht schlau