Alleen de eerste in een reeks bewaren

Status
Niet open voor verdere reacties.

jbusser

Gebruiker
Lid geworden
23 feb 2007
Berichten
148
Ik heb een zeer grote tabel (>15000 records) waarin een flink aantal dubbele records staan (ca 5700)
Ik heb nu een query waarin dubbele records zichtbaar zijn.
Nu heeft ieder record een datum en ik wil graag alleen de oudste record bewaren, m.a.w: de herhalingen moeten er uit!
Is er een bijwerk query te bedenken waarbij alleen die oudste record bewaard blijft?
 
Ja, door een Group By query te maken waarbij je op MAX als functie gebruikt op het datumveld. Als ze chronologisch zijn ingevoerd, kan je dat ook doen met het Autonummer ID veld, want dan kan een oudere datum nooit een hoger ID hebben.
 
Niet vergeten: in de groepsquery zelf kan je de resultaten niet aanpassen, dus je zal een tweede query nodig hebben als subquery of gelinkte query om de records daadwerkelijk te verwijderen. Ik zou daarna ook een unieke index op de veldencombinatie leggen die niet dubbel mogen zijn. Kwestie van in de toekomst dubbels te vermijden. Trouwens 15000 records is echt niet veel hoor.
 
Is er een bijwerk query te bedenken waarbij alleen die oudste record bewaard blijft?
En je gebruikt uiteraard een Verwijderquery, geen Bijwerkquery :). Ik zet meestal de dubbele nummers (+ID) in een tijdelijke tabel, die ik gebruik om de gewenste nummers te filteren in de verwijderquery. En inderdaad: voorkom dat je in het vervolg dubbele records krijgt door bij je imports een check in te bouwen of de unieke waarden al bestaan :).
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan