J'ai une table de jeu avec la description suivante :
+---------------+-------------+------+-----+---------+----------------+ | 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 | | +---------------+-------------+------+-----+---------+----------------+
Mais chaque match a une entrée en double quelque part dans le tableau car chaque match figure sur les calendriers des deux équipes. Existe-t-il une instruction SQL que je peux utiliser pour voir et supprimer tous les doublons en fonction des mêmes champs date, heure, hometeam_id, awayteam_id, locationcity et locationstate ?
Vous pouvez essayer une requête comme celle-ci :
Cela ne conservera qu'un seul exemple de chaque instance de jeu avec le plus petit identifiant dans la base de données.
Vous devriez pouvoir effectuer une sous-requête corrélée pour supprimer les données. Recherchez toutes les lignes en double et supprimez tout sauf la ligne avec le plus petit identifiant. Pour MYSQL, vous devez utiliser les jointures internes (équivalent fonctionnel à EXISTS) comme suit :
Pour tester, place
从游戏中删除游戏
替换为从游戏中选择*
. Ne vous contentez pas d'exécuter delete sur la base de données :-)