Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Comment supprimer les enregistrements en double dans une table ?

Vous ne donnez pas le nom de votre table mais je pense que quelque chose comme ça devrait fonctionner. Il suffit de laisser l'enregistrement qui a l'ID le plus bas. Vous voudrez peut-être tester avec le ROLLBACK en premier !

BEGIN TRAN
DELETE <table_name>
FROM <table_name> T1
WHERE EXISTS(
SELECT * FROM <table_name> T2 
WHERE     
T1.TYPE_INT = T2.TYPE_INT  AND
T1.SYSTEM_VALUE = T2.SYSTEM_VALUE  AND
T1.NAME = T2.NAME  AND
T1.MAPPED_VALUE = T2.MAPPED_VALUE  AND
T2.ID > T1.ID
)

SELECT * FROM <table_name>

ROLLBACK