MariaDB: Chercher les doublons (enregistrements en double)

Les enregistrements en double sont déjà difficiles à contrôler manuellement dans les petits fichiers, donc avec les grandes quantités de données telles que celles gérées avec MariaDB, ils ne peuvent être maîtrisés qu'avec un outil approprié.

En principe, il faut distinguer entre les doublons évidents et les doublons flous. Vous trouverez plus d’informations sur les doublons flous dans l’article "Doublons avec de petites différences". Les doublons évidents, donc ceux où les caractères sont identiques sauf pour la casse, sont faciles à trouver avec des requêtes SQL. Avec la requête suivante, par exemple, MariaDB retourne tous les enregistrements qui coïncident avec le contenu du champ de données 'nom':

SELECT tab1.id, tab1.name, tab2.id, tab2.name
FROM tablename tab1, tablename tab2
WHERE tab1.name=tab2.name
AND tab1.id<>tab2.id
AND tab1.id=(SELECT MAX(id) FROM tablename tab
WHERE tab.name=tab1.name)

Comme on peut voir, cette requête SQL a besoin d'une colonne avec un ID qui identifie chaque enregistrement clairement, pour assurer qu'un enregistrement ne sera pas comparé avec lui-même. En plus, cet ID est requis pour assurer que l'enregistrement avec le plus grand ID n'apparaîtra que dans la colonne 'tab1.id', et non aussi dans la colonne 'tab2.id'. De cette façon, on assure que l'enregistrement du groupe de doublons avec le plus grand ID ne sera pas supprimé. Les IDs des enregistrements qui seront supprimés sont écrits dans la colonne 'tab2.id'. Voici les résultats incorporés dans une commande DELETE pour MariaDB:

DELETE FROM tablename 
WHERE id IN
(SELECT tab2.id
FROM tablename tab1, tablename tab2
WHERE tab1.name=tab2.name
AND tab1.id<>tab2.id
AND tab1.id=(SELECT MAX(id) FROM tablename tab
WHERE tab.name=tab1.name))

Cette commande SQL peut aussi être facilement élargie pour inclure, en plus du contenu du champ de données 'nom', d'autres champs de données dans la comparaison, par exemple, ceux qui contiennent l'adresse postale.

Vous pouvez en lire plus sur les autres possibilités offertes par SQL pour la recherche de doublons flous dans l'article 'Trouver les doublons flous avec SQL'. Ce problème ne peut être vraiment résolu qu’avec des outils spécialisés, qui offrent une recherche de doublons tolérante aux erreurs, comme par exemple DataQualityTools: