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

Apa cara terbaik untuk menghapus nilai duplikat dari Tabel MySQL?

Pertama, Anda dapat mencoba menambahkan indeks ke bidang ProgramName dan CustID jika Anda belum memilikinya.

De-Duping

Anda dapat mengelompokkan catatan Anda untuk mengidentifikasi penipuan, dan saat Anda melakukannya, ambil nilai ID minimum untuk setiap grup. Kemudian, hapus saja semua record yang ID-nya bukan salah satu dari MinID.

Metode Dalam Klausul

delete from
 ProgramsList
where
 id not in 
    (select min(id) as MinID
      from ProgramsList
      group by ProgramName, CustID) 

Metode Gabung

Anda mungkin harus menjalankan ini lebih dari sekali, jika ada banyak anggota per grup.

DELETE P
FROM ProgramsList as P
INNER JOIN 
    (select count(*) as Count, max(id) as MaxID
     from ProgramsList
     group by ProgramName, CustID) as A on A.MaxID = P.id
WHERE A.Count >= 2

Beberapa orang memiliki masalah kinerja dengan In-Clause, beberapa tidak. Itu sangat tergantung pada indeks Anda dan semacamnya. Jika yang satu terlalu lambat, coba yang lain.

Terkait:https://stackoverflow.com/a/4192849/127880



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabel MySQL besar

  2. Daftar tag SQL dan pemfilteran tag

  3. MYSQL kompleks Union

  4. Terhubung ke Amazon RDS dengan PHP

  5. Cara terbaik untuk menyimpan dan mengambil sinonim di database mysql