Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menghapus baris duplikat dari tabel

Ya, dengan asumsi Anda memiliki bidang ID unik, Anda dapat menghapus semua catatan yang sama kecuali untuk ID, tetapi tidak memiliki "ID minimum" untuk grup nilainya.

Contoh kueri:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY Field1, Field2, Field3, ...
)

Catatan:

  • Saya bebas memilih "Tabel" dan "ID" sebagai nama perwakilan
  • Daftar bidang ("Bidang1, Bidang2, ...") harus mencakup semua bidang kecuali ID
  • Ini mungkin kueri yang lambat tergantung pada jumlah bidang dan baris, namun saya berharap ini akan baik-baik saja dibandingkan dengan alternatif

EDIT:Jika Anda tidak memiliki indeks unik, rekomendasi saya adalah menambahkan indeks unik tambahan otomatis. Terutama karena desainnya bagus, tetapi juga karena memungkinkan Anda menjalankan kueri di atas.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbedaan antara VARCHAR dan TEXT di MySQL

  2. LOAD DATA INFILE Kode Kesalahan:13

  3. Menggunakan backtick di sekitar nama bidang

  4. Cara Mencadangkan/Memulihkan MySQL/MariaDB dan PostgreSQL Menggunakan Alat 'Automysqlbackup' dan 'Autopostgresqlbackup'

  5. Kinerja MySQL – Kueri Lambat dan innodb_buffer_pool_size