Maison  >  Article  >  base de données  >  Comment implémenter la vérification des doublons dans MySQL et n'en laisser qu'un

Comment implémenter la vérification des doublons dans MySQL et n'en laisser qu'un

藏色散人
藏色散人original
2020-11-01 14:33:162488parcourir

Méthode MySQL pour implémenter la vérification des doublons et n'en conserver qu'un : recherchez d'abord les enregistrements en double redondants dans la table via "select * from" ; puis supprimez les données en double via " delete from " et ne conservez qu'une seule donnée.

Comment implémenter la vérification des doublons dans MySQL et n'en laisser qu'un

Recommandé : "Tutoriel vidéo mysql"

mysql supprime les données en double et ne conserve qu'un seul enregistrement

Supprimez les données en double et conservez l'enregistrement avec le plus petit identifiant dans le nom

delete from order_info where id not in (select id from (select min(id) as id from order_info group by order_number) as b);

delete from table where id not in (select min(id) from table group by name having count(name)>1) and  id in (select id group by name having count(name)>1)

(Remarque : la façon dont la clause HAVING définit les conditions pour la clause GROUP BY est similaire à la manière dont WHERE et SELECT interagissent. WHERE La condition de recherche est appliquée avant l'opération de regroupement ; tandis que la condition de recherche HAVING est appliquée après l'opération de regroupement. La syntaxe HAVING est similaire à la syntaxe WHERE, mais la clause HAVING peut faire référence à n'importe quel élément affiché dans la sélection. list )

Extension :

SQL : Supprimez les données en double et ne conservez qu'une seule instruction SQL Supprimez les doublons et n'en conservez qu'une parmi des milliers. enregistrements. , il existe des enregistrements identiques, comment pouvons-nous utiliser les instructions SQL pour supprimer les doublons ?

1. Recherchez les enregistrements en double redondants dans la table. (peopleId) Pour juger

select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)

2. Supprimez les enregistrements en double redondants dans la table. Les enregistrements en double sont jugés sur la base d'un seul champ (peopleId), ne laissant que l'enregistrement avec le plus petit rowid

delete from people where   peopleName in (select peopleName    from people group by peopleName      having count(peopleName) > 1) and   peopleId not in (select min(peopleId) from people group by peopleName     having count(peopleName)>1)

. 3. Recherchez le tableau Enregistrements en double redondants (champs multiples)

select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)

4 Supprimez les enregistrements en double redondants (champs multiples) dans le tableau, en ne laissant que l'enregistrement avec le plus petit rowid

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)

5. . Recherchez le tableau Enregistrements en double redondants (champs multiples), en excluant 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) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)

6 Supprimez le premier chiffre à gauche d'un champ :

update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'

7. le premier chiffre à droite d'un champ Première place :

update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'

8. Supprimez faussement les enregistrements en double redondants (plusieurs champs) dans la table, en excluant l'enregistrement avec le plus petit rowid

update vitae set ispass=-1 where peopleId in (select peopleId from vitae group by peopleId,seq having count(*) > 1) and seq in (select 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)
.

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