Doppelten datensatz bei mysql löschen

hallo.
wie kann ich bei einer mysql datenbank alle dupletten löschen??
id ist immer eine andere, aber text und name sind immer gleich.

kann man das was machen??

grüße,
sebastian

spontan fällt mir nur ein, mit php drüber zu iterieren, dafür gibts aber mit sicherheit auch performantere und elegantere möglichkeiten…

was sagt google?

ich würde es wie folgt lösen:

Die Tabelle um eine Spalte erweitern, z.B. behalten. Dann mit SELECT DISTINCT alle Datensätze EINMALIG mit einem UPDATE-Befehl durchlaufen lassen und behalten auf “Y” setzen.

Nun einen DELETE-Befehl ausführen mit der WHERE-Klausel WHERE behalten != “Y”.

Dann hätte man nur noch einmalige Datensätze.

Oder

[ul][li]die Tabelle dumpen[/li]
[li]im Texteditor jedem INSERT-Statement das Keyword IGNORE hinzufügen[/li]
[li]Tabelleninhalte löschen [TRUNCATE][/li]
[li]die Felder/Feldkombinationen, die keine doppelten Inhalte haben dürfen, mit einem UNIQUE Index belegen[/li]
[li]Dump wieder einspielen[/li][/ul]

Natürlich ist das nur bei nicht allzu umfangreichem Datenbestand eine denkbare Alternative; und eine Sicherungskopie der Tabelle sollte auch vorher angelegt werden.

das problem ist, dass ich immer viele daten eintragen muss, und manche dabei doppelt sein könnten, deshlab wäre ein automatisiert lösung besser.

danke aber für den vorschlag :wink:

es werden aber mit einem query immer ca. 20 einträge auf einmal gemacht, und wenn dann ein feld davon doppelt ist, schlägt der komplette query fehl.

schon mal über REPLACE nachgedacht?

danke. über den tipp habe ich gefunden, was ich suche.

on duplicate key update :slight_smile:

Hi,

wie chrisb schon gesagt hat würde ich an deiner Stelle[quote=“chrisb”]die Felder/Feldkombinationen, die keine doppelten Inhalte haben dürfen, mit einem UNIQUE Index belegen[/quote]damit verhinderst du, dass du in Zukunft wieder in eine solche Situation kommst :wink:

das ja sowieso, aber wenn ich sie nicht update, dann klappt der ganze query nicht