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

Cara menghapus duplikat dalam tabel SQL berdasarkan beberapa bidang

Anda harus dapat melakukan subquery yang berkorelasi untuk menghapus data. Temukan semua baris yang merupakan duplikat dan hapus semua kecuali yang memiliki id terkecil. Untuk MYSQL, gabungan dalam (fungsional setara dengan EXISTS) perlu digunakan, seperti:

delete games from games inner join 
    (select  min(id) minid, date, time,
             hometeam_id, awayteam_id, locationcity, locationstate
     from games 
     group by date, time, hometeam_id, 
              awayteam_id, locationcity, locationstate
     having count(1) > 1) as duplicates
   on (duplicates.date = games.date
   and duplicates.time = games.time
   and duplicates.hometeam_id = games.hometeam_id
   and duplicates.awayteam_id = games.awayteam_id
   and duplicates.locationcity = games.locationcity
   and duplicates.locationstate = games.locationstate
   and duplicates.minid <> games.id)

Untuk menguji, ganti delete games from games dengan select * from games . Jangan hanya menjalankan penghapusan pada DB Anda :-)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa yang Harus Diperiksa jika Pemanfaatan Memori MySQL Tinggi?

  2. python menyandikan mysql :(

  3. Bagaimana cara menggandakan hasil kueri untuk mengurangi jumlah kueri?

  4. Penggunaan PDO di kelas

  5. Bagaimana cara menggunakan lebih besar dari operator dengan tanggal?