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
Libérer: 2025-01-23 13:43:08
original
369 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

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