Maison  >  Article  >  base de données  >  doublons de données de requête MySQL

doublons de données de requête MySQL

WBOY
WBOYoriginal
2023-05-12 10:00:372879parcourir

MySQL est un système de gestion de bases de données relationnelles populaire qui peut être utilisé pour stocker, gérer et interroger des bases de données. Dans MySQL, nous devons parfois interroger des données en double. Cet article vous présentera comment utiliser MySQL pour interroger la duplication de données.

Première étape : Créez une base de données dans MySQL et ajoutez des données

Créez une base de données dans MySQL et ajoutez une table avec des données en double. Voici un exemple de requête SQL :

CREATE DATABASE testdb;

USE testdb;

CREATE TABLE users (
  id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  name VARCHAR(30) NOT NULL,
  email VARCHAR(50) NOT NULL
);

INSERT INTO users (name, email) VALUES
  ('Tom', 'tom@email.com'),
  ('Steve', 'steve@email.com'),
  ('John', 'john@email.com'),
  ('Tom', 'tom@email.com'),
  ('Jim', 'jim@email.com');

Cette requête créera une nouvelle base de données nommée "testdb" et y créera une table nommée "users". Le tableau contient trois colonnes : "id" (clé primaire), "name" et "email". Nous avons inséré cinq lignes, dont deux contenaient le même nom et la même adresse e-mail.

Étape 2 : Rechercher les données en double

Maintenant, nous devons trouver toutes les lignes en double. Pour ce faire, nous utiliserons une requête imbriquée :

SELECT name, email, COUNT(*) c
FROM users
GROUP BY name, email
HAVING c > 1;

Cette requête renverra toutes les lignes où le nom et l'adresse email apparaissent plus d'une fois dans le tableau. Nous utilisons l'instruction GROUP BY pour regrouper par nom et adresse e-mail, et l'instruction HAVING pour filtrer les groupes comportant plus d'une ligne dans le groupe.

Après avoir exécuté cette requête, nous obtiendrons les résultats suivants :

+------+----------------+---+
| name | email          | c |
+------+----------------+---+
| Tom  | tom@email.com  | 2 |
+------+----------------+---+

Comme nous pouvons le voir, cette requête a trouvé les données en double que nous avons ajoutées dans le tableau. Les résultats affichent les noms et adresses e-mail en double ainsi que le nombre de fois qu'ils apparaissent dans le tableau.

Troisième étape : supprimer les doublons

Si nous voulons supprimer toutes les lignes en double, nous pouvons utiliser la requête suivante pour les supprimer :

DELETE FROM users WHERE id NOT IN (
  SELECT id
  FROM (
    SELECT MIN(id) id
    FROM users
    GROUP BY name, email
  ) t
);

Ceci La requête supprimera toutes les lignes en double qui ne correspondent pas au plus petit identifiant. Nous avons utilisé une sous-requête pour sélectionner le plus petit identifiant dans chaque groupe répétitif. Cette sous-requête utilise d'abord une instruction GROUP BY pour regrouper par nom et adresse e-mail, puis sélectionne le plus petit ID de chaque groupe. La requête principale utilise une instruction NOT IN et une sous-requête pour supprimer toutes les lignes qui ne contiennent pas le plus petit ID.

Après avoir exécuté cette requête, nous pouvons réexécuter la requête ci-dessus pour vérifier si les données en double ont été supprimées avec succès.

Summary

La recherche de données en double dans MySQL est facile. Nous pouvons utiliser des requêtes imbriquées et des instructions GROUP BY pour rechercher les lignes en double et les supprimer à l'aide des instructions DELETE. En utilisant ces technologies, nous pouvons gérer et maintenir facilement la base de données.

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