Maison > base de données > tutoriel mysql > Comment supprimer les données en double dans MySQL

Comment supprimer les données en double dans MySQL

青灯夜游
Libérer: 2022-01-05 12:05:37
original
61435 Les gens l'ont consulté

Dans MySQL, vous pouvez utiliser l'instruction "SELECT" et le mot-clé "DISTINCT" pour effectuer des requêtes de déduplication et filtrer les données en double. La syntaxe est "SELECT DISTINCT field name FROM data table name ;".

Comment supprimer les données en double dans MySQL

L'environnement d'exploitation de ce tutoriel : système windows7, version mysql8, ordinateur Dell G3.

Utilisez le mot-clé SELECT 语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,MySQL 提供了 DISTINCT dans MySQL.

La fonction principale du mot-clé DISTINCT est de filtrer les données en double dans un ou plusieurs champs de la table de données et de renvoyer une seule donnée à l'utilisateur. Le format de syntaxe du mot-clé

DISTINCT est :

SELECT DISTINCT <字段名> FROM <表名>;
Copier après la connexion

Parmi eux, "nom du champ" est le nom du champ qui doit éliminer les enregistrements en double. S'il y a plusieurs champs, séparez-les par des virgules.

Vous devez faire attention aux points suivants lorsque vous utilisez le mot-clé DISTINCT :

  • Le mot-clé DISTINCT ne peut être utilisé que dans une instruction SELECT.

  • Lors de la déduplication d'un ou plusieurs champs, le mot-clé DISTINCT doit être au début de tous les champs.

  • S'il y a plusieurs champs après le mot-clé DISTINCT, les multiples champs seront combinés et dédupliqués, c'est-à-dire que lorsque la combinaison de plusieurs champs est exactement la même, ils seront dédupliqués.

Exemple

Ce qui suit utilise un exemple spécifique pour illustrer comment interroger des données non dupliquées.

La structure de la table et les données de la table étudiant dans la base de données de test sont les suivantes :

mysql> SELECT * FROM test.student;
+----+----------+------+-------+
| id | name     | age  | stuno |
+----+----------+------+-------+
|  1 | zhangsan |   18 |    23 |
|  2 | lisi     |   19 |    24 |
|  3 | wangwu   |   18 |    25 |
|  4 | zhaoliu  |   18 |    26 |
|  5 | zhangsan |   18 |    27 |
|  6 | wangwu   |   20 |    28 |
+----+----------+------+-------+
6 rows in set (0.00 sec)
Copier après la connexion

Les résultats montrent qu'il y a 6 enregistrements dans la table étudiant.

Ce qui suit consiste à dédoublonner le champ age de la table student. L'instruction SQL et le résultat en cours d'exécution sont les suivants :

mysql> SELECT DISTINCT age FROM student;
+------+
| age  |
+------+
|   18 |
|   19 |
|   20 |
+------+
3 rows in set (0.00 sec)
Copier après la connexion

Les champs nom et age de la table student sont dédupliqués. L'instruction SQL et le résultat en cours d'exécution sont les suivants. :

mysql> SELECT DISTINCT name,age FROM student;
+----------+------+
| name     | age  |
+----------+------+
| zhangsan |   18 |
| lisi     |   19 |
| wangwu   |   18 |
| zhaoliu  |   18 |
| wangwu   |   20 |
+----------+------+
5 rows in set (0.00 sec)
Copier après la connexion

Pour la table étudiant Tous les champs sont dédupliqués. L'instruction SQL et les résultats d'exécution sont les suivants :

mysql> SELECT DISTINCT * FROM student;
+----+----------+------+-------+
| id | name     | age  | stuno |
+----+----------+------+-------+
|  1 | zhangsan |   18 |    23 |
|  2 | lisi     |   19 |    24 |
|  3 | wangwu   |   18 |    25 |
|  4 | zhaoliu  |   18 |    26 |
|  5 | zhangsan |   18 |    27 |
|  6 | wangwu   |   20 |    28 |
+----+----------+------+-------+
6 rows in set (0.00 sec)
Copier après la connexion

Parce que DISTINCT ne peut renvoyer que son champ cible et ne peut pas renvoyer d'autres champs, donc dans des situations réelles, nous utilisons souvent DISTINCT. mot-clé pour renvoyer le nombre de champs uniques d'éléments.

Requérez le nombre d'enregistrements dans la table des étudiants après la déduplication des champs nom et âge. L'instruction SQL et les résultats d'exécution sont les suivants :

mysql> SELECT COUNT(DISTINCT name,age) FROM student;
+--------------------------+
| COUNT(DISTINCT name,age) |
+--------------------------+
|                        5 |
+--------------------------+
1 row in set (0.01 sec)
Copier après la connexion

Les résultats montrent qu'il y a 5 enregistrements dans la table des étudiants après la déduplication du nom. et les champs d'âge.

【Recommandation associée : tutoriel vidéo mysql

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