Ich habe einen Spieltisch mit der folgenden Beschreibung:
+---------------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+-------------+------+-----+---------+----------------+ | id | int(11) | NO | PRI | NULL | auto_increment | | date | date | NO | | NULL | | | time | time | NO | | NULL | | | hometeam_id | int(11) | NO | MUL | NULL | | | awayteam_id | int(11) | NO | MUL | NULL | | | locationcity | varchar(30) | NO | | NULL | | | locationstate | varchar(20) | NO | | NULL | | +---------------+-------------+------+-----+---------+----------------+
Aber jedes Spiel hat irgendwo in der Tabelle einen doppelten Eintrag, weil jedes Spiel im Spielplan beider Teams steht. Gibt es eine SQL-Anweisung, mit der ich alle Duplikate basierend auf denselben Feldern für Datum, Uhrzeit, Heimteam-ID, Auswärtsteam-ID, Standortstadt und Standortstatus anzeigen und entfernen kann?
您可以尝试这样的查询:
这将在数据库中仅保留每个具有最小 ID 的游戏实例的一个示例。
您应该能够执行相关子查询来删除数据。查找所有重复的行并删除除 id 最小的行之外的所有行。对于 MYSQL,需要使用内连接(相当于 EXISTS 的功能),如下所示:
要进行测试,请将
从游戏中删除游戏
替换为从游戏中选择*
。不要只是在数据库上运行删除:-)