Sie sollten in der Lage sein, eine korrelierte Unterabfrage durchzuführen, um die Daten zu löschen. Finden Sie alle Zeilen, die Duplikate sind, und löschen Sie alle bis auf die mit der kleinsten ID. Für MYSQL muss ein innerer Join (funktionales Äquivalent von EXISTS) verwendet werden, etwa so:
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)
Ersetzen Sie zum Testen delete games from games
mit select * from games
. Führen Sie nicht einfach einen Löschvorgang für Ihre Datenbank durch :-)