Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Duplikate bei besonderer MDB-Struktur löschen

Dieses Thema im Forum "Microsoft Access" wurde erstellt von Sixta Gohlke, 5 Juli 2012.

  1. Sixta Gohlke

    Sixta Gohlke Neuer Benutzer

    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?

    Ein Vorschlag ist

    delete from MyTable
    where uniqueField not in
    (select min(uniqueField) from MyTable T2
    where T2.dupField=MyTable.dupField)

    das scheint aber als

    delete from Main where Category not in (select min(Category) from Main T2 where T2.Description=Main.Description)

    nicht zu funktionieren
     
  2. ukulele

    ukulele Datenbank-Guru

    Das ist nicht ganz einfach. Wenn ich dich richtig verstehe kann Category auch in mehreren Fällen 0 sein.

    Ich versuche mal einen Ansatz, der in MS SQL funktionieren könnte. In Access bin ich mir nicht sicher wegen TOP und DISTINCT. Wichtig ist, das die recordID eindeutig ist.
    Code:
    DELETE
    FROM    Main
    WHERE    recordID IN (    SELECT    recordID
                            FROM    (    SELECT    t1.[Description],
                                                ( SELECT TOP 1 recordID FROM Main t2 WHERE [Description] = t1.[Description] ORDER BY category DESC ) AS recordID
                                        FROM    ( SELECT DISTINCT [Description] FROM Main ) t1
                                    ) t3
                        )
    Bitte nur mit Testdaten ausführen.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden