Cet article vous explique principalement comment supprimer les données en double dans MySQL. Cet article l'explique avec des exemples et espère vous aider.
supprimer FROM `ex` OÙ téléphone dans (SELECT c.phone
FROM `ex` as c
GROUP BY c.phone
HAVING COUNT( * ) >1) et l'identifiant n'est pas inclus (sélectionnez max(b.id) dans `ex` en tant que groupe b par b.phone);
Remarque : ex (exemple de nom de table), en fonction du champ du téléphone, déterminer si répéter. Conserver à plusieurs reprises le dernier inséré (c'est-à-dire celui avec le plus grand ID auto-incrémenté)
Cependant, après l'exécution, le résultat n'est pas celui attendu :
/* Erreur SQL ( 1093) : Vous ne pouvez pas spécifier la table cible 'ex' pour la mise à jour dans la clause FROM */
Traduction : Vous ne pouvez pas d'abord sélectionner certaines valeurs dans la même table, puis mettre à jour (supprimer) ce tableau (dans la même déclaration), c'est-à-dire que vous ne pouvez pas porter un jugement basé sur la valeur d'un certain champ, puis mettre à jour la valeur d'un certain champ.
La question concerne uniquement : mysql, sans compter oracle, serveur sql, etc. Parce que la prise en charge des sous-instructions par MySQL n'est pas très bonne.
Problème résolu :
Sélectionnez d'abord le résultat puis sélectionnez-le à nouveau via la table intermédiaire. Le résultat de la sélection devient une table mise en cache avec un alias, une table virtuelle.
Comme le montre l'image : cela résout le problème de la suppression des informations en double dans une instruction SQL de MySQL.
Pour votre commodité :
DELETE FROM `ex` WHERE id NOT IN ( SELECT id FROM (SELECT max(b.id) AS id FROM `ex` b GROUP BY b.phone) b);
Recommandations associées :
Mysql supprime les données en double Conserver le plus petit identifiant
Supprimer l'instruction SQL des données en double
MySQL supprime les lignes de données en double et n'en enregistre qu'une seule
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!