Scusate se solo ora rispondo ma ho avuto un mezzo disastro per cui mi ero perso metà del lavoro fatto l'altro giorno sul database 
Consideriamo che della tabella su cui devo lavorare mi interessano, qui, quattro campi:
KUID (testo breve) (chiave primaria)
Progr (numerico)
Versione (numerico)
Obsoleto (boleano)
Il campo "Progr" è la fonte per la ricerca dei duplicati mentre il campo "Versione" è quello che mi dice quale sia il record da rendere obsoleto.
Per questa ragione avevo creato una query di questo tipo:
SELECT KUID.Progr, Min(KUID.Versione) AS MinDiVersione, KUID.Obsoleto
FROM KUID
GROUP BY KUID.Progr, KUID.Obsoleto
HAVING (((KUID.Progr) In (SELECT [Progr] FROM [KUID] As Tmp GROUP BY [Progr] HAVING Count(*)>1 )));
che, effettivamente, mi seleziona il record che voglio trovare ma... a questo punto non so come utilizzare questo risultato per aggiornare nella tabella il campo booleano "Obsoleto"
NB che nella query qui sopra non ho potuto inserire il campo "KUID" in quanto con questo presente mi si annullava tutto il discorso del "MinDiVersione"
Non vorrei aver sbagliato completamente l'approcio al problema ma non ho proprio idea di come uscirne.
Spero che in questo modo sia un po' più chiaro l'inghippo.
Ciao
Roberto