Bạn sẽ có thể thực hiện một truy vấn con tương quan để xóa dữ liệu. Tìm tất cả các hàng trùng lặp và xóa tất cả trừ hàng có id nhỏ nhất. Đối với MYSQL, một phép nối bên trong (chức năng tương đương với EXISTS) cần được sử dụng, như sau:
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)
Để kiểm tra, hãy thay thế delete games from games
với select * from games
. Đừng chỉ chạy xóa trên DB của bạn :-)