Duplikate bei besonderer MDB-Struktur löschen

Liebe/-r Experte/-in,

Ich habe eine mdb-Datei mit der Struktur

Tabelle Main:

int recordID, int status, int placement, bool @private, string category, string note, string description, string dueDate, bool completed, int priority, byte[] blob, bool repeatOnCompleteDate, string completeDate, bool alarmSet, string alarmTime, int alarmAdvance, string repeatStartDate, string repeatInfo

Ich möchte doppelte Einträge löschen, bei denen description gleich ist, sodaß je nur noch ein Eintrag übrigbleibt. Vorzugsweise soll der Eintrag übrigbleiben, bei dem category nicht „0“ ist.

Wie ist der MS-Access-SQL-Befehl?

Hallo donatus.orth,

die folgende Anweisung liefert die Zeilen mit doppelten description-Einträgen, in denen category = „0“ ist, also jene Zeilen die gelöscht werden sollen:

SELECT description
FROM Main
GROUP BY description, category
HAVING count(\*) \> 1 AND category = "0"

Mit der folgenden DELETE-Anweisung werden alle diese Zeilen gelöscht:

DELETE 
FROM Main
WHERE description IN (SELECT description
 FROM Main
 GROUP BY description, category
 HAVING count(\*) \> 1 AND category = "0")

Peter

Danke. So wie es aussieht, werden alle mit Kategorie 0 gelöscht. Was aber, wenn es Duplikate gibt, die eben nicht „0“ haben, sondern etwa „3“?

Falls category verschiedene Werte (bei doppelten description-Einträgen) haben kann, müssten diese Werte explizit angegeben werden, z.B. (nur letzte Zeile):

HAVING count(\*) \> 1 AND category IN ("0", "3")

Peter

Hallo Donatus,

ist die RecordID eindeutig? Also Primärschlüssel?

Gruß
Ingo

Hi, bin gerade unterwegs in Frankfurt und hatte 3 Tage kein Internet im Hotel. Ich kann die Frage beantworten, bin aber gerade im Stress. Hast Du noch Zeit bis morgen, oder hat es sich schon erledigt ?

LG Vera