sql >> Base de Datos >  >> RDS >> PostgreSQL

¿Cómo eliminar entradas duplicadas?

Algunos de estos enfoques parecen un poco complicados y generalmente hago esto como:

Tabla dada table , quiero hacerlo único en (campo1, campo2) manteniendo la fila con el máximo campo3:

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

Por ejemplo, tengo una tabla, user_accounts y quiero agregar una restricción única en el correo electrónico, pero tengo algunos duplicados. Diga también que quiero mantener el creado más recientemente (id máximo entre duplicados).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Nota:USING no es SQL estándar, es una extensión de PostgreSQL (pero muy útil), pero la pregunta original menciona específicamente a PostgreSQL.