


Comment supprimer les doublons d'une table à l'aide d'un index unique dans MySQL ?
Oct 25, 2024 am 07:46 AMSuppression 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>
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 :
- Copiez les données dans une table temporaire.
- Tronquez la table d'origine.
- Créez l'index UNIQUE sur la table d'origine.
- 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>
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Réduisez l'utilisation de la mémoire MySQL dans Docker

Comment modifier une table dans MySQL en utilisant l'instruction ALTER TABLE?

Comment résoudre le problème de MySQL ne peut pas ouvrir la bibliothèque partagée

Exécutez MySQL dans Linux (avec / sans conteneur Podman avec phpmyadmin)

Exécuter plusieurs versions MySQL sur macOS: un guide étape par étape

Comment sécuriser MySQL contre les vulnérabilités communes (injection SQL, attaques par force brute)?

Comment configurer le cryptage SSL / TLS pour les connexions MySQL?
