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

Comment supprimer les entrées en double ?

Certaines de ces approches semblent un peu compliquées, et je le fais généralement comme :

Table donnée table , voulez l'unique sur (champ1, champ2) en gardant la ligne avec le maximum champ3 :

DELETE FROM table USING table alias 
  WHERE table.field1 = alias.field1 AND table.field2 = alias.field2 AND
    table.max_field < alias.max_field

Par exemple, j'ai une table, user_accounts , et je souhaite ajouter une contrainte unique sur le courrier électronique, mais j'ai des doublons. Dites également que je souhaite conserver le dernier créé (identifiant max parmi les doublons).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Remarque - USING n'est pas SQL standard, c'est une extension PostgreSQL (mais très utile), mais la question d'origine mentionne spécifiquement PostgreSQL.