PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bagaimana cara menghapus entri duplikat?

Beberapa pendekatan ini tampak sedikit rumit, dan saya biasanya melakukannya sebagai:

Tabel yang diberikan table , ingin unik di (field1, field2) menjaga baris dengan max field3:

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

Misalnya, saya punya tabel, user_accounts , dan saya ingin menambahkan batasan unik pada email, tetapi saya memiliki beberapa duplikat. Katakan juga bahwa saya ingin menyimpan yang terbaru (maks id di antara duplikat).

DELETE FROM user_accounts USING user_accounts ua2
  WHERE user_accounts.email = ua2.email AND user_account.id < ua2.id;
  • Catatan - USING bukan SQL standar, ini adalah ekstensi PostgreSQL (tetapi ekstensi yang sangat berguna), tetapi pertanyaan awal secara khusus menyebutkan 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. Gabungkan kueri dengan hanya kolom yang memiliki semua nilai dalam klausa `dalam`

  2. Kolom Postgres tidak ada

  3. Hibernasi menyimpan model Pengguna ke Postgres

  4. PostgreSQL:Nonaktifkan koneksi untuk sementara

  5. Jika hitungan PostgreSQL (*) selalu lambat, bagaimana cara membuat halaman kueri kompleks?