Ich würde es folgendermaßen machen:
-
Erstellen Sie eine temporäre Tabelle aus Ihrer vorhandenen Tabelle:
CREATE TEMPORARY TABLE data_to_keep LIKE table_with_dupes_in_it
-
Füllen Sie die temporäre Tabelle nur mit den gewünschten Datensätzen:
INSERT INTO data_to_keep SELECT DISTINCT * FROM table_with_dupes_in_it
-
Leeren Sie die Tabelle
TRUNCATE TABLE table_with_dupes_in_it
-
Geben Sie die Daten aus der temporären Tabelle in die ursprüngliche Tabelle zurück
INSERT INTO table_with_dupes_in_it SELECT * FROM data_to_keep;
-
Aufräumen
DROP TEMPORARY TABLE data_to_keep
Beachten Sie, dass dies eine große Menge an Speicher und/oder Speicherplatz verschlingen kann, wenn die betreffende Tabelle groß ist. Wenn es sich um eine große Tabelle handelt, würde ich eher eine echte Tabelle anstelle einer temporären Tabelle verwenden, um nicht übermäßig viel Speicher auf Ihrem DB-Server zu verbrauchen.
BEARBEITEN ZUM HINZUFÜGEN:
Wenn Sie sich nur Sorgen um teilweise Dupes machen (Zeilen, bei denen nur einige der Daten mit den zuvor eingegebenen Daten identisch sind), sollten Sie GROUP BY verwenden. Wenn Sie GROUP BY verwenden, können Sie MySQL darauf beschränken, nur eine Zeile zurückzugeben, die bestimmte Daten enthält, anstatt alle.
SELECT *
FROM table
GROUP BY column_name
Sie sollten auch die Verwendung von UNIQUE-Indizes für die Spalten in Betracht ziehen, die keine doppelten Daten enthalten sollen. Dadurch wird verhindert, dass Benutzer überhaupt doppelte Daten einfügen.