Dublikate löschen

26/06/2008 - 16:19 von Stefan Simon | Report spam
Hallo,

ich habe eine Tabelle, in der fàlschlicher Weise doppelte Werte drin stehen.
Das sieht etwa so aus:

ID| Spalte A | Spalte B
1 | 1 | 1
2 | 2 | 1
3 | 2 | 1
4 | 1 | 2
5 | 2 | 2
6 | 4 | 3
7 | 5 | 3
8 | 5 | 3
9 | 6 | 3

Nun will ich die doppelten Werte löschen. So das folgendes übrig bleibt:

ID| Spalte A | Spalte B
1 | 1 | 1
2 | 2 | 1
4 | 1 | 2
5 | 2 | 2
6 | 4 | 3
7 | 5 | 3
9 | 6 | 3

Also nach Spalte A und B gruppiert. Ich bekomme das irgendwie nicht so
richtig hin, weiß jemand, wie der Befehl aussehen muss?

select * from Tab1 where id in (select min(id) from Tab1 where Spalte_A in
(select top 100 percent Spalte_A from Tab1 group by Spalte_A, Spalte_B order
by Spalte_B))

Haut nicht ganz hin, ich bekomme nur 1 Eintrag als Ergebnis.

tia,
Stefan
 

Lesen sie die antworten

#1 ekkehard.horner
26/06/2008 - 17:29 | Warnen spam
Stefan Simon schrieb:
Hallo,

ich habe eine Tabelle, in der fàlschlicher Weise doppelte Werte drin stehen.
Das sieht etwa so aus:

ID| Spalte A | Spalte B
1 | 1 | 1
2 | 2 | 1
3 | 2 | 1
4 | 1 | 2
5 | 2 | 2
6 | 4 | 3
7 | 5 | 3
8 | 5 | 3
9 | 6 | 3

Nun will ich die doppelten Werte löschen. So das folgendes übrig bleibt:

ID| Spalte A | Spalte B
1 | 1 | 1
2 | 2 | 1
4 | 1 | 2
5 | 2 | 2
6 | 4 | 3
7 | 5 | 3
9 | 6 | 3

Also nach Spalte A und B gruppiert. Ich bekomme das irgendwie nicht so
richtig hin, weiß jemand, wie der Befehl aussehen muss?


[...]

Ausgehend von "Delete Similar Records"

http://www.cryer.co.uk/brian/sql/sq...icates.htm

sollte

DELETE T2.*
FROM Tab1 AS T1,
Tab1 AS T2
WHERE T1.A = T2.A AND T1.B = T2.B AND T1.ID < T2.ID

funktionieren.

Ähnliche fragen