Maison > base de données > tutoriel mysql > le corps du texte

Comment supprimer les doublons d'une table à l'aide d'un index unique dans MySQL ?

Mary-Kate Olsen
Libérer: 2024-10-25 07:46:02
original
731 Les gens l'ont consulté

How to Remove Duplicates from a Table Using a Unique Index in MySQL?

Suppression des doublons avec un index unique

Si vous avez une grande table avec des enregistrements en double et que vous souhaitez les supprimer en créant un index unique, vous devez être conscient des conséquences potentielles.

Si vous tentez d'ajouter un index unique à une table qui contient déjà des doublons, l'opération échouera en raison d'une erreur de clé en double. En effet, les index uniques renforcent le caractère unique des données qu'ils contiennent.

Cependant, il existe une solution de contournement à ce problème. Vous pouvez utiliser le modificateur IGNORE lors de la création de l'index unique. Cela demandera à MySQL d'ignorer toutes les valeurs en double et d'insérer uniquement les valeurs uniques.

<code class="sql">ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D) IGNORE;</code>
Copier après la connexion

L'utilisation du modificateur IGNORE supprimera les doublons, mais il est important de noter qu'il ne précise pas quelle ligne sera conservée. . MySQL choisira arbitrairement une ligne pour chaque doublon et supprimera les autres.

Si vous utilisez MySQL version 5.7.4 ou supérieure, le modificateur IGNORE pour ALTER TABLE a été supprimé et provoquera une erreur. Dans ce cas, vous pouvez utiliser la solution de contournement suivante :

  1. Copiez les données dans une table temporaire.
  2. Tronquez la table d'origine.
  3. Créez l'index UNIQUE sur la table d'origine.
  4. Insérez les données dans la table d'origine à l'aide de INSERT IGNORE.
<code class="sql">CREATE TABLE tmp_data SELECT * FROM mytable;
TRUNCATE TABLE mytable;
ALTER TABLE mytable ADD UNIQUE INDEX myindex (A, B, C, D);
INSERT IGNORE INTO mytable SELECT * from tmp_data;
DROP TABLE tmp_data;</code>
Copier après la connexion

L'utilisation de INSERT IGNORE ignorera toutes les valeurs en double et n'insérera que les valeurs uniques. Une fois les données insérées, la table temporaire peut être supprimée.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!