Maison  >  Article  >  développement back-end  >  Mysql implémente la déduplication des données

Mysql implémente la déduplication des données

小云云
小云云original
2018-03-28 13:59:241912parcourir

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn