Comment rechercher et supprimer des doublons dans SQL

Comment rechercher et supprimer des doublons dans SQL
Des lecteurs comme vous aident à soutenir MUO. Lorsque vous effectuez un achat en utilisant des liens sur notre site, nous pouvons gagner une commission d'affiliation. Lire la suite.

Les meilleures pratiques de conception de base de données recommandent d'utiliser la contrainte UNIQUE pour éviter les doublons dans une base de données. Cependant, lorsque vous travaillez avec une base de données mal conçue ou des données impures, vous devrez peut-être rechercher vous-même les doublons et les supprimer manuellement.





comment pirater votre compte bancaire et ajouter de l'argent

Lisez la suite pour savoir comment trouver des doublons dans une base de données SQL et comment les supprimer.





Créer un exemple de base de données

À des fins de démonstration, créez une table nommée Utilisateurs avec une colonne de nom et de score en exécutant cette requête SQL.





 DROP TABLE IF EXISTS Users; 

CREATE TABLE Users (
    pk_id int PRIMARY KEY,
    name VARCHAR (16),
    score INT,
);

Insérez quelques exemples de valeurs en exécutant cette requête :

 INSERT INTO 
    Users(pk_id, name, score)
VALUES
    (1, 'Jane', 20),
    (2, 'John', 13),
    (3, 'Alex', 32),
    (4, 'John', 46),
    (5, 'Jane', 20),
    (6, 'Mary', 34),
    (7, 'Jane', 20),
    (8, 'John', 13)

Notez que certaines de ces lignes contiennent des valeurs en double pour la colonne de nom.



N'hésitez pas à consulter ces Commandes et requêtes SQL si vous avez besoin d'une explication plus approfondie sur la façon de manipuler des bases de données à l'aide de SQL.

Utilisation de GROUP BY pour rechercher des valeurs en double

Tu peux utiliser l'instruction GROUP BY pour organiser les valeurs remplissant certaines conditions dans le même groupe.





Supposons que les noms dans l'exemple de table doivent être uniques. Vous pouvez utiliser GROUP BY pour regrouper les lignes partageant le même nom.

 SELECT name, COUNT(name) 
FROM Users
GROUP BY name
HAVING COUNT(name) > 1

COUNT vous permet de sélectionner les lignes qui ont plus d'un utilisateur avec le même nom.





Lorsque vous exécutez cette requête, la base de données renverra les lignes contenant John et Jane en double.

Suppression des doublons d'une base de données

Après avoir trouvé les doublons, vous souhaiterez peut-être les supprimer à l'aide de l'instruction DELETE.

Pour cet exemple, exécutez la requête suivante :

 WITH cte AS ( 
    SELECT *
        ROW_NUMBER() OVER (
            PARTITION BY
                name, score
            ORDER BY
                name, score
        ) R
     FROM
        Users
)

DELETE FROM cte
WHERE R > 1;

Cette requête utilise une expression CTE pour rechercher les doublons, puis les supprime tous sauf un.

Pourquoi vous devriez supprimer les données en double

La suppression des données en double n'est pas indispensable. Cependant, cela vous permet de libérer l'espace utilisé par les lignes dupliquées.

Moins de lignes signifie également que les requêtes peuvent s'exécuter beaucoup plus rapidement, ce qui améliore les performances. Utilisez les requêtes de ce didacticiel pour vous aider à rechercher et à supprimer les doublons d'une base de données SQL.