J'ai essayé de supprimer les enregistrements en double dans ma base de données. La seule différence est la PrimaryKey qui est un identifiant unique. J'ai environ 1500 entrées qui ont été dupées donc dans tout ce que je regarde environ 3000 entrées. J'ai donc sectionné environ 60 entrées (basé sur la date receivedOn) et exécuté mon code pour les réduire à 30 et OH CRAP le 30 a disparu! Voici le code que j'ai essayé:Essayer de supprimer les entrées en double dans la base de données SQL a supprimé tous les enregistrements. Qu'est ce qui ne s'est pas bien passé?
DELETE dupes
FROM [emailTable] dupes, [emailTable] fullTable
WHERE (dupes.ReceivedOn > '2009-08-18 23:59:59.999' AND dupes.ReceivedOn < '2009-08-20 00:00:00.000')
AND (dupes.emlPath = fullTable.emlPath)
AND NOT (dupes.GUID = fullTable.GUID)
Mon but est de supprimer le doublon. Je ne m'inquiète pas lequel ... mais j'ai besoin d'une des deux entrées pour rester sur le serveur ... Quelqu'un peut-il faire la lumière sur ce que j'ai fait de mal?
Peut-être que vous faites déjà, mais je ne voudrais pas supprimer tout ou modifier les données de production de quelque manière que sans vérifier d'abord la requête fonctionne dans une transaction avec un ROLLBACK. Quand vous savez que vous avez raison, changez ROLLBACK pour COMMIT. –
Je ne suis pas! et cela serait probablement utile. Comment puis-je faire cela? – swolff1978
BEGIN TRAN * votre code ici * ROLLBACK TRAN COMMIT TRAN lorsque les lignes affectées ressemblent au numéro attendu, mettez en surbrillance COMMIT TRAN et exécutez-le. –