Maison  >  Article  >  base de données  >  Déduplication de base de données basée sur des champs spécifiés

Déduplication de base de données basée sur des champs spécifiés

步履不停
步履不停original
2019-06-19 13:14:597230parcourir

Déduplication de base de données basée sur des champs spécifiés

Exigences : Supprimez les données en double d'une table utilisateur en fonction du champ nom/e-mail/numéro_carte

Idée : Vous pouvez utiliser la méthode group by pour interroger les données « en double », stocker les données dans une table temporaire, puis stocker les données dans la table temporaire dans la table spécifiée

Malentendus et solution ; : La méthode group by ne peut obtenir que certains champs (champs spécifiés sans duplication) et ne peut pas obtenir les données complètes en une seule fois. Cependant, l'identifiant dans l'ensemble de résultats group by peut être obtenu via la fonction max, puis. toutes les données peuvent être interrogées en fonction de l'identifiant défini.

Idées de test

    Interroger les données après déduplication

SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num;

    À partir des données après déduplication Obtenez le id défini à partir de

SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users  GROUP BY name,email,card_num) as T;

    Obtenez l'identifiant défini à partir des données dédupliquées et obtenez la liste des enregistrements à partir des données sources

SELECT * from users  where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);

La méthode réelle

    obtient l'identifiant défini à partir des données dédupliquées, obtient la liste d'enregistrements à partir des données source et stocke les données de la liste dans une table temporaire

create TEMP TABLE tmp_data as SELECT * from users where id in (SELECT ID from (SELECT max(id) as id,name,email,card_num FROM users GROUP BY name,email,card_num) as T);

    Enregistrez les données de la table temporaire dans la table de données spécifiée, complétez

insert into users_copy1 select * from tmp_data;

Vérifier

    Le résultat du test est-il le même que le nombre total de données après la déduplication dans la première étape ?

select count(*) from users_copy1;

Résultat du test : 2300 éléments de données sont dupliqués parmi les éléments de données de 1,4 W. Le résultat réel est de 0,7 s, ce qui répond essentiellement aux besoins actuels.

Pour plus d'articles techniques liés à MySQL, veuillez visiter la colonne Tutoriel MySQL pour apprendre !

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