Maison  >  Article  >  base de données  >  Méthode de déduplication MySQL

Méthode de déduplication MySQL

怪我咯
怪我咯original
2017-07-06 11:25:482746parcourir

Cet article présente principalement les informations pertinentes sur la méthode de déduplication MySQL. Les amis qui en ont besoin peuvent se référer à la

Méthode de déduplication MySQL

【 Basique】Il y a très peu de lignes en double

Utilisez distinctct pour les trouver, puis supprimez-les manuellement ligne par ligne.

[Intermédiaire] Déduplication selon la répétition d'un seul champ

Par exemple : Déduplication du champ id

Utilisation : Get l'identifiant Pour les valeurs des champs répétés, utilisez les lignes où se trouve le même champ d'identifiant pour comparer les champs avec des données différentes, et supprimez toutes les lignes en double à l'exception de la ligne où se trouve le champ le plus petit (ou le plus grand). Généralement, la clé primaire est utilisée à des fins de comparaison, car la valeur de la clé primaire doit être une valeur unique et ne doit pas être la même.

id  name

1    a

1    b

2    c

2    a

3    c

Résultat :

id  name

1    a 

2    a

Opération :

delete from a_tmp 

where id in (select * from (select b.id from a_tmp b group by b.id having count(b.id) >1) bb) 

and name not in (select * from (select min(a.name) from a_tmp a GROUP BY a.id having count(a.id) >1) aa);


Remarque :

Les mots en gras et en vert ci-dessus doivent avoir un alias et doivent utiliser le format select * from (...), sinon une erreur sera signalée :

[Err] 1093 - Vous pouvez ' Ne spécifiez pas la table cible 'a_tmp' pour la mise à jourdate dans la clause FROM

[Avancé] Répétez par plusieurs champs pour supprimer les doublons

Par exemple : Dédoublonnez les lignes avec le même ID et le même nom, c'est-à-dire : les lignes avec le même ID et le même nom sont comptées comme des lignes en double, les lignes avec le même ID et des noms différents sont comptées comme des lignes non en double

Méthode d'utilisation : et unique Si les champs sont similaires, la clé primaire est généralement utilisée à des fins de comparaison, car la valeur de la clé primaire doit être une valeur unique.

id  name  rowid

1  a      1

1  a      2

1  b      3

2  b      4

2  b      5

3  c      6

3  d     7

Résultat :

id  name  rowid

1  a      1 

1  b      3

2  b      4

3  c      6

3  d     7

Opération :

Premier type :

delete from a_tmp 

where (id,name) in (select * from (select b.id,b.name from a_tmp b group by b.id,b.name having count(b.id) >1) bb) 

and rowid not in (select * from (select min(a.rowid) from a_tmp a group by a.id,a.name having count(a.id) >1) aa);

Deuxième type :

Connectez les valeurs des champs id et name et insérez-les dans la table temporaire b_tmp, afin que vous puissiez utiliser la méthode de suppression de jugement à champ unique [Intermédiaire].

# Insérez la valeur de la connexion entre les deux champs et le champ de valeur unique de la table a_tmp dans la table b_tmp

insert into b_tmp 

 select concat(id,name),rowid from a_tmp;

#查出需要留下来的行

select id_name,max(rowid)

 from b_tmp 

 group by id_name

 having count(id_name)>1;

#使用【中级】的方法,或存储过程完成去重的工作

[Ultimate] Chaque ligne a deux copies des mêmes données

Par exemple :

Utilisation : Les données de toute la ligne sont les mêmes et il n'y a aucun moyen d'utiliser des instructions SQL pour les supprimer, car il y a aucune restriction conditionnelle pouvant être utilisée pour quitter une ligne et supprimer toutes les mêmes données OK. Il n'y a pas de champs différents. Vous pouvez créer différents champs par vous-même, c'est-à-dire : ajouter un champ, le configurer pour qu'il s'incrémente automatiquement et le définir comme clé primaire, et il ajoutera automatiquement la valeur supérieure.

id  name

1   a

1   a

1   b

1   b

2   c

2   c

3   c

3   c

Résultat :

id  name   rowid

1   a       1

1   b       3

2   c       5

3   c       7

Opération :

Ajouter un champ auto-croissant et le définir temporairement comme clé primaire.

Utilisez les méthodes [Intermédiaire] et [Avancé] ci-dessus.

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