Maison >base de données >tutoriel mysql >Comment supprimer efficacement les lignes en double dans une table MySQL ?

Comment supprimer efficacement les lignes en double dans une table MySQL ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2025-01-23 13:43:08395parcourir

How to Efficiently Delete Duplicate Rows in a MySQL Table?

Comment supprimer les lignes en double dans la table MySQL

Dans la gestion de bases de données, éliminer les données en double est une tâche courante. Dans MySQL, cela peut être réalisé en utilisant la commande DELETE.

Ce qui suit est un exemple de tableau :

<code class="language-sql">CREATE TABLE names (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);</code>

Supposons que la table contienne des doublons :

<code class="language-sql">INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');
INSERT INTO names (name) VALUES ('msn');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('google');
INSERT INTO names (name) VALUES ('yahoo');

SELECT * FROM names;</code>

Pour supprimer toutes les lignes en double (conserver la ligne avec le plus petit ID), utilisez la requête suivante :

<code class="language-sql">DELETE n1
FROM names n1, names n2
WHERE n1.id > n2.id
  AND n1.name = n2.name;</code>

Alternativement, pour conserver la ligne avec le plus grand ID, utilisez la requête suivante :

<code class="language-sql">DELETE n1
FROM names n1, names n2
WHERE n1.id < n2.id
  AND n1.name = n2.name;</code>

Avertissement : Assurez-vous de sauvegarder vos tables avant d'exécuter toute requête de suppression pour éviter toute perte accidentelle de données.

Pour les grands tableaux, il est recommandé d'utiliser les méthodes INSERT et DISTINCT plus rapides :

```sql CRÉER UNE TABLE TEMPORAIRE temp_names SELECT DISTINCT identifiant, nom DE noms ; TRUNCATE TABLE noms ; INSERT INTO noms (id, nom) SELECT identifiant, nom FROM noms_temp; DROP TABLE noms_temp; ```

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