MySQL Tabelle doppelte Einträge löschen...
Jeanette Kielei
- php
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 ???)
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
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
Vielen Dank, ihr habt mir sehr geholfen!
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
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