Es kommt vor, dass man in einer Datenbank-Tabelle mehrere Datensätze mit dem gleichen Inhalt hat und diese finden möchte:

SELECT Email, FKMarketID, FKLanguageID, Count(*) FROM NewsletterSubscriptions
GROUP BY Email, FKMarketID, FKLanguageID HAVING COUNT(*) > 1

Die Kriterien für die Eindeutigkeit sind hier die Felder Email, FKMarketID und FKLanguageID.

Will man sie jetzt noch löschen, kann man folgendes Statement benutzen:

DELETE FROM NewsletterSubscriptions WHERE SubscriptionID IN
(
SELECT T1.SubscriptionID FROM NewsletterSubscriptions T1, NewsletterSubscriptions T2
WHERE T1.Email = T2.Email and T1.FKMarketID = T2.FKMarketID AND T1.FKLanguageID = T2.FKLanguageID AND T1.SubscriptionID > T2.SubscriptionID
)

Kommentare

#1 Martin Brunner schrieb am Donnerstag, 21. Oktober 2010 16:22:00:
Danke.
(war in google der 9. Treffer mit "sql duplikate finden")

Dein Kommentar