la manière la plus simple, est d'avoir un identifiant unique sur chaque ligne. Donc, si vous ne possédez pas déjà un, créez une nouvelle colonne appelée « row_id » et réglez Pour enregistrer la table, vous devez maintenant avoir un identifiant unique sur chaque ligne
Ensuite, vous pouvez construire un grand sql laid pour faire ce dont vous avez besoin, mais si votre table est grande, elle ne fonctionnera pas bien Il est donc préférable d'utiliser une table temporaire pour enregistrer les lignes dupliquées, puis de la référencer pour votre instruction delete
Identifiez d'abord les doublons et stockez l'ID de ligne min
SELECT a.SerWorkNumber, a.SerialNo, a.Type, Min(a.row_id) AS MinOfrow_id INTO CD_FD_Dups
FROM CD_FD AS a
GROUP BY a.SerWorkNumber, a.SerialNo, a.Type
HAVING count(1) > 1;
suivant, supprimer de la table réelle faisant référence à la table temporaire créé ci-dessus:
DELETE
FROM CD_FD AS a
WHERE EXISTS (
SELECT 1
FROM CD_FD_Dups d
WHERE d.SerWorkNumber = a.SerWorkNumber
and d.SerialNo = a.SerialNo
and d.Type = a.Type
and a.row_id > d.MinOfrow_id
);
Quelle version de SQL utilisez-vous? –
Merci @Tim Biegeleisen. ı utilisé Msaccess – Sero
Le code que j'ai écrit est > SUPPRIMER CD_FD. [SerWorkNumber], CD_FD. [SerialNo], CD_FD. [ServiceCenter], CD_FD. [ReceivedDate], CD_FD. [Type] DE CD_FD OU (((CD_FD. [SerWorkNumber]) In (SELECT [SerWorkNumber] FROM [CD_FD] Comme Tmp GROUP BY [SerWorkNumber] Compte HAVING (*)> 1)) ET ((CD_FD. [Type]) = "CD")); – Sero