Maison > Article > base de données > Méthode de déduplication MySQL
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!