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

Supprimer le doublon d'une table

C'est l'une des nombreuses raisons pour lesquelles toutes les tables doivent avoir une clé primaire (pas nécessairement un numéro d'identification ou une IDENTITÉ, mais une combinaison d'une ou plusieurs colonnes qui identifie de manière unique une ligne et dont l'unicité est appliquée dans la base de données).

Votre meilleur pari est quelque chose comme ceci :

SELECT field1, field2, field3, count(*) 
INTO temp_table1
FROM table1
GROUP BY field1, field2, field3 having count(*) > 1

DELETE T1
FROM table1 T1
INNER JOIN (SELECT field1, field2, field3
      FROM table1
      GROUP BY field1, field2, field3 having count(*) > 1) SQ ON
            SQ.field1 = T1.field1 AND
            SQ.field2 = T1.field2 AND
            SQ.field3 = T1.field3

INSERT INTO table1 (field1, field2, field3)
SELECT field1, field2, field3
FROM temp_table1

DROP TABLE temp_table1