Wenn ich eine Tabelle mit 2 wichtigen Spalten habe,
CREATE TABLE foo (id INT, a INT, b INT, KEY a, KEY b);
Wie kann ich alle Zeilen finden, die sowohl a
y b
die in beiden Zeilen gleich sind? Zum Beispiel, in diesem Datensatz
id | a | b
----------
1 | 1 | 2
2 | 5 | 42
3 | 1 | 42
4 | 1 | 2
5 | 1 | 2
6 | 1 | 42
Ich möchte alle Zeilen mit Ausnahme der folgenden zurückbekommen id=2
da sie einzigartig ist in (a,b)
. Im Grunde möchte ich alle verletzenden Zeilen finden, die eine
ALTER TABLE foo ADD UNIQUE (a, b);
Etwas besseres als eine n^2 for-Schleife wäre schön, da meine Tabelle 10M Zeilen hat.
Für Bonuspunkte : Wie entferne ich alle Zeilen bis auf eine (es ist mir egal, welche, Hauptsache eine bleibt übrig)?