Maison > Article > base de données > Une liste complète des méthodes pour interroger et supprimer les enregistrements en double dans MySQL
Cet article vous présente principalement les méthodes d'interrogation et de suppression des enregistrements en double dans MySQL, et le partage pour votre référence et votre étude. Jetons un coup d'œil à l'introduction détaillée.
Trouver tous les enregistrements avec des titres en double :
select title,count(*) as count from user_table group by title having count>1;rrree
1. Rechercher les enregistrements en double
1. Rechercher tous les enregistrements en double
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
2. Filtrer les enregistrements en double (en afficher un seul)
SELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title = a.Title) > 1) ORDER BY Title DESC
Remarque : l'enregistrement avec le plus grand identifiant est affiché ici
2. Supprimer les enregistrements en double
1 Supprimer tous les enregistrements en double (À utiliser avec prudence)
Select * From HZT Where ID In (Select Max(ID) From HZT Group By Title)<.>2, gardez-en un (cela devrait être ce dont la plupart des gens ont besoin ^_^)
Delete 表 Where 重复字段 In (Select 重复字段 From 表 Group By 重复字段 Having Count(*)>1)
Remarque : Conservez le dossier avec le plus grand identifiant ici
3. Exemple
1. Recherchez les enregistrements en double redondants dans la table. Les enregistrements en double sont jugés en fonction d'un seul champ (peopleId)Delete HZT Where ID Not In (Select Max(ID) From HZT Group By Title)2. enregistrements en double dans la table, les enregistrements en double sont jugés sur la base d'un seul champ (peopleId) et seul l'enregistrement avec le plus petit rowid est laissé
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)3. Recherchez les enregistrements en double redondants (plusieurs champs) dans la recherche table
delete from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1) and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)4. Supprimez les enregistrements en double redondants (plusieurs champs) dans la table, en ne laissant que l'enregistrement avec le plus petit rowid
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)5. champs) dans la table, à l'exclusion de l'enregistrement avec le plus petit rowid. Enregistrement
delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
4. Le supplément
contient plus de deux enregistrements en double. L'un est un enregistrement complètement en double, c'est-à-dire un enregistrement avec tous les champs répétés, et l'autre est un enregistrement partiel avec des champs clés répétés, tels que des champs Nom répétés, mais d'autres champs ne peuvent pas être répétés ou peuvent être ignorés. 1. Le premier type de duplication est relativement facile à résoudre. Utilisezselect * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)pour obtenir un ensemble de résultats sans enregistrements en double. Si la table doit supprimer les enregistrements en double (en conservant 1 enregistrement en double), vous pouvez le supprimer comme suit
select distinct * from tableNameLa raison de cette duplication est une mauvaise conception de la table, l'ajout d'une colonne d'index unique peut être résolu. 2. Ce type de problème de duplication nécessite généralement de conserver le premier enregistrement parmi les enregistrements en double. La méthode de fonctionnement est la suivante Supposons qu'il existe des champs en double nommés Nom et Adresse, et c'est le cas. requis pour obtenir l'unicité de ces deux champs. L'ensemble de résultats
select distinct * into #Tmp from tableName drop table tableName select * into tableName from #Tmp drop table #Tmp
Résumé
Ce qui précède est l'intégralité du contenu de cet article. peut apporter une aide aux études ou au travail de chacunApprentissage recommandé :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!