Duplikate löschen

Hallo Experten,
Habe eine Access-Datenbank mit ca. 105.000 Datensätzen
und möchte eine Abfrage erstellen, in der die doppelten Datensätze nach Spalte F verschwunden sind.
Habe es versucht über Eigenschaften der Abfrage „Keine Duplikate“ -Ja;
Das Funktioniert aber nicht so wie gedacht !!

hat jemand Rat ?

hallo

zunächst einmal: spielzeugdatenbanken wie access gehören ein brett höher :wink:

was genau hast du vor? leider ist „abfrage“ im zusammenhang mit access nicht ganz eindeutig. willst du alle datensätze löschen, die in der spalte f nicht eindeutig sind? oder willst du einfach nur die eindeutigen werte für f erhalten?

was z.b. geht:

select distinct * from tabelle
– liefert nur eindeutige zeilen der tabelle, wobei aber ALLE spalten einbezogen werden

select distinct f from tabelle
– liefert die eindeutigen werte für f - aber eben nur diese spalte

select min(id), f from tabelle group by f
– liefert nur eindeutige werte für f sowie die kleinste id pro wert

select * from tabelle where (id, f) in (select min(id), f from tabelle group by f)
– liefert nur eindeutige werte für f sowie den jeweils ersten datensatz für jeden wert

delete from tabelle where id in (select b.id from tabelle a, tabelle b where a.f = b.f and a.id

[ot] Abfragen editieren in Access
Moin, Erwin,

all diese Anweisungen kannst Du so in Access hinschreiben, wenn Dir danach ist - Entwurfsansicht, Dropdown „Ansicht“, dort SQL wählen.

frag bitte nicht, wie das mit diesem dämmlichen abfrage-editor
von access geht - der macht mit wahnsinnig.

Die Entwurfsansicht, Dropdown „Ansicht“, Auswahl „Entwurfsansicht“ (Tschulljung) wähle ich, um verknüpfte Tabellen und deren Felder auszuwählen, oft wechsle ich für den Feinschliff dann nach „SQL“. Damit nimmt mir Access zumindest einen Haufen Schreibarbeit ab.

Gruß Ralf

Vielen Dank Ihr beiden,

aber das ging jetzt etwas zu schnell !!

Ihr meint, ich soll die SQL um diesen Part ergänzen ? (Semicolon weg)


delete from Bestandsdaten where id in (select b.id from Bestandsdaten a, Bestandsdaten b where a.f = b.f and a.id [Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Moin, Christian,

delete from Bestandsdaten where id in (select b.id from
Bestandsdaten a, Bestandsdaten b where a.f = b.f and a.id