[solved] Doppelte Einträge in MySQL löschen
-
Hallo zusammen,
ich benutze MySQL und habe eine Tabelle mit folgender Strunktur:
`ID, Name, destination1, Peter, New York
5, Bernd, Berlin
10 Bernd, Paris
25 Peter, New York
29 Bernd, Paris
34 Peter, Rom
Die ID ist für jeden Datensatz anders und wiederholt sich nicht. Die Einträge, bei denen Name und destination doppelt vorkommen, sollen nun gelöscht werden, sodass nur noch
Id, Name, destination1, Peter, New York
5, Bernd, Berlin
10 Bernd, Paris
34 Peter, Rom`
in der Datenbank steht.
Ich weiß, dass ich mitSelect distinct Name,destination from tabelle
die Einträge herausfiltern kann, die ich am Ende haben möchte. Wie kann ich aber nun die, die nicht in dieser Tabelle stehen, löschen?
Dazu benötige ich doch die ID, aber wie kann ich mir die ID von den herausgefilterten Datensätzen anzeigen lassen?
wenn ichSelect distinct ID,Name,destination from tabelle
eingebe, bekomme ich wieder alle Daten, da ID ja nicht doppelt vorkommt, alles andere aber schon.
Ich habe mich an diesem Beispiel (in einem anderem Forum gefunden) orientiert:
DELETE FROM tabelle WHERE ( tabelle_id NOT IN ( SELECT Temp.tabelle_id FROM ( SELECT DISTINT tabelle_id, tabelle_beispieldatenfeld -- das Dublettenkritium, können auch mehrere sein FROM tabelle ) Temp ) )
aber dazu brauche ich ja irgendwie die ID
-
Du solltest einen Index setzen dann gibt es sowas auch nicht.
Löschen: Mit einen Statement geht sowas nicht.
-
Ein anderer Ansatz wäre eine neue Tabelle anzulegen und diese mit den Distinct zu befüllen. Also
INSERT INTO neu SELECT DISTINCT name,dest FROM alt
Dann die alte weghauen und die neue umbenennen.
Und wie Unix-Tom schon sagteCREATE UNIQUE INDEX ON neu (name,dest )
-
SELECT id FROM tabelle GROUP BY Name, Destination
-
MySQLer schrieb:
SELECT id FROM tabelle GROUP BY Name, Destination
Versteh grad nicht, was das bringen soll?!?
-
Ich habe versucht mit meinem Post die einzige Frage die ich im Thread von abby erkennen konnte zu beantworten. Ich weiß dass das hier im Forum unüblich ist, aber ich bin gern rebellisch und widersetze mich den unverständlichen Foreneigenheiten, bei denen man alles beantwortet, aber niemals nicht die gestellte Frage!
Achso, hier die Frage:
abby schrieb:
Dazu benötige ich doch die ID, aber wie kann ich mir die ID von den herausgefilterten Datensätzen anzeigen lassen?
So nun noch die Erklärung:
Das Statement zieht die ID aller Datensätze die sich in Bezug auf "Name" und "Destination" doppeln, oder allgemein > 1x vorkommen.abby schrieb:
da ID ja nicht doppelt vorkommt, alles andere aber schon.
Ich hoffe ausreichend und verständlich geantwortet zu haben ...
LG
-
MySQLer schrieb:
Achso, hier die Frage:
abby schrieb:
Dazu benötige ich doch die ID, aber wie kann ich mir die ID von den herausgefilterten Datensätzen anzeigen lassen?
So nun noch die Erklärung:
Das Statement zieht die ID aller Datensätze die sich in Bezug auf "Name" und "Destination" doppeln, oder allgemein > 1x vorkommen.Ja, ich muss dir Recht geben, das war genau das, was ich gebraucht hab
Eigentlich ja total simpel, aber ich bin einfach nicht drauf gekommen...Vielen Dank