Maison > base de données > tutoriel mysql > Exemples détaillés de deux méthodes de déduplication dans MySQL

Exemples détaillés de deux méthodes de déduplication dans MySQL

怪我咯
Libérer: 2017-07-05 11:08:18
original
2650 Les gens l'ont consulté

Cet article présente principalement l'explication détaillée des deux méthodes de déduplication dans mysql et les informations associées de l'exemple de code Voici une explication détaillée des deux méthodes de déduplication une par une. en cas de besoin, vous pouvez vous y référer. Suivant

Déduplication mysql

Méthode 1 :

Lors de l'utilisation de MySQL dans , il est parfois nécessaire de interroger pour trouver des enregistrements non en double dans un certain champ. Bien que mysql fournisse le mot-clé distinct pour filtrer les enregistrements en double redondants et n'en conserver qu'un, c'est souvent le cas. utilisé uniquement pour renvoyer un numéro d'enregistrement non en double au lieu de l'utiliser pour renvoyer toutes les valeurs sans enregistrements en double. La raison en est que distinct ne peut renvoyer que son champ cible, mais ne peut pas renvoyer d'autres champs

Jetons d'abord un coup d'œil à un exemple :

   table
  id name
  1 a
  2 b
  3 c
  4 c
  5 b
Copier après la connexion

structure de la bibliothèque Probablement comme ceci, ce n'est qu'un exemple simple, la situation réelle sera beaucoup plus compliquée.

Par exemple, si je souhaite utiliser une seule instruction pour interroger toutes les données dont les noms ne sont pas en double, je dois utiliser distinct pour supprimer les enregistrements en double redondants.

select distinct name from table
Copier après la connexion

Le résultat obtenu est :

 name
  a
  b
  c
Copier après la connexion

Il semble avoir obtenu l'effet, mais ce que je veux obtenir, c'est la valeur d'identification ? Modifiez l'instruction de requête :

select distinct name, id from table
Copier après la connexion

Le résultat sera :

 id name
  1 a
  2 b
  3 c
  4 c
  5 b
Copier après la connexion

Pourquoi distinct ne fonctionne-t-il pas ? Cela fonctionne, mais cela affecte deux champs en même temps, c'est-à-dire que l'identifiant et le nom doivent être identiques avant de pouvoir être supprimés. . . . . . .

Modifions à nouveau l'instruction de requête :

select id, distinct name from table
Copier après la connexion

Malheureusement, vous ne pouvez rien obtenir à part le message d'erreur, distinct doit être placé en début. Est-il si difficile de distinguer la condition où ? Peut signaler des erreurs. . . . . . .

La déclaration finale utile est la suivante :

select *, count(distinct name) from table group by name
Copier après la connexion

Résultat :

  id name count(distinct name)
  1 a 1
  2 b 1
  3 c 1
Copier après la connexion

Le dernier élément est redondant, laissez-le tranquille, le but est atteint. . . . .

Oh, oui, au fait, group by doit être placé avant order by et limit, sinon une erreur sera signalée. . . . . . . . ! OK

Instruction récapitulative : select *, count(nom distinct) from (select * from table... et autres instructions imbriquées) grouper par nom

Méthode 2 :

Utiliser group by

SELECT * FROM( 
select * from customer where user=( 
  SELECT source_user from customer WHERE user='admin') UNION ALL select * from customer where user=( 
  select source_user from customer where user=( 
    SELECT source_user from customer WHERE user='admin')) union ALL select * from customer where user=( 
  select source_user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))) UNION ALL select * from customer where source_user=(/*我的上线的上线的user*/ 
  select user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))) union all select * from customer where source_user=(/*我的上线的上线的上线user*/ 
  select user from customer where user=( 
  select source_user from customer where user=( 
    select source_user from customer where user=( 
      SELECT source_user from customer WHERE user='admin'))))) as alias group by user;
Copier après la connexion

Attention à ajouter un alias, sinon une erreur sera signalée, veillez à enveloppez-le en dehors de l'instruction Where, puis utilisez Seul le groupe par déduplication prendra effet.

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