PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak usunąć zduplikowane wpisy?

Niektóre z tych podejść wydają się nieco skomplikowane i zazwyczaj robię to jako:

Dana tabela table , chcesz go niepowtarzalny na (pole1, pole2) zachowując wiersz z max pole3:

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

Na przykład mam tabelę user_accounts i chcę dodać ograniczenie unikatowe do poczty e-mail, ale mam kilka duplikatów. Powiedz również, że chcę zachować ostatnio utworzony (maksymalny identyfikator wśród duplikatów).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Uwaga — USING nie jest standardowym SQL, jest rozszerzeniem PostgreSQL (ale bardzo użytecznym), ale oryginalne pytanie dotyczy wyraźnie PostgreSQL.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak skonfigurować PostgreSQL, aby akceptował wszystkie połączenia przychodzące?

  2. Test IS NOT NULL dla rekordu nie zwraca TRUE, gdy zmienna jest ustawiona

  3. zapisywanie obiektu pytona w tabeli postgres z marynatą

  4. Czy mogę dodać ograniczenie UNIQUE do tabeli PostgreSQL po jej utworzeniu?

  5. Wzorce i modyfikatory szablonów do formatowania liczb w PostgreSQL