Maison > base de données > tutoriel mysql > le corps du texte

Méthode de déduplication MySQL

怪我咯
Libérer: 2017-07-06 11:25:48
original
2749 Les gens l'ont consulté

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
Copier après la connexion

Résultat :

id  name

1    a 

2    a
Copier après la connexion

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);
Copier après la connexion


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
Copier après la connexion

Résultat :

id  name  rowid

1  a      1 

1  b      3

2  b      4

3  c      6

3  d     7
Copier après la connexion

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);
Copier après la connexion

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;

#使用【中级】的方法,或存储过程完成去重的工作
Copier après la connexion

[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
Copier après la connexion

Résultat :

id  name   rowid

1   a       1

1   b       3

2   c       5

3   c       7
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!