2010-02-10 7 views
0

Y a-t-il un moyen de supprimer toutes les lignes répétées d'une base de données MySQL?Supprimer les lignes répétées de la table MySQL

+1

Que voulez-vous dire en disant " Répétez les lignes ", voulez-vous dire exactement des lignes égales ou des valeurs de colonne en double? –

+0

Chaque colonne étant la même à l'exception de l'identifiant – Brian

Répondre

1

Il y a quelques années, quelqu'un a demandé un moyen de supprimer les doublons. Subselects permettent avec une requête comme ceci dans MySQL 4.1:

DELETE FROM some_table WHERE primaryKey NOT IN 
(SELECT MIN(primaryKey) FROM some_table GROUP BY some_column) 

Bien sûr, vous pouvez utiliser MAX(primaryKey) aussi bien si vous voulez garder le nouvel enregistrement avec la valeur en double au lieu du plus ancien enregistrement de la valeur en double .

Pour comprendre comment cela fonctionne, regardez à la sortie de cette requête:

SELECT some_column, MIN(primaryKey) FROM some_table GROUP BY some_column 

Comme vous pouvez le voir, cette requête renvoie la clé primaire pour le premier enregistrement contenant chaque valeur de some_column. Logiquement, alors, toute valeur de clé NON trouvée dans cet ensemble de résultats doit être un doublon, et par conséquent, elle doit être supprimée.

1

Ces questions/réponses pourraient vous intéresser:

et l'idée qui est souvent utilisé lorsque vous travaillez avec une grande table est à:

  • Créer une nouvelle table
  • Insérez dans ce tableau les enregistrements uniques (c.-à-d. une seule version des doublons dans la table d'origine, en utilisant généralement un select distinct)
  • et utilisez cette nouvelle table dans votre application; ou déposez l'ancienne table et renommez la nouvelle à l'ancien nom.

bonne chose avec ce principe est que vous avez la possibilité de vérifier ce qui est dans la nouvelle table avant de laisser tomber l'ancien - toujours agréable de vérifier ce genre de chose ^^

Questions connexes