2014-09-16 4 views
0

Je veux supprimer les enregistrements en double de la table. La table n'a pas de clé primaire (ID), donc les réponses like this ne conviennent pas.Comment supprimer l'enregistrement en double de la table dans mysql

Voici mon essai:

DELETE FROM afscp_permit 
USING afscp_permit, afscp_permit AS vtable 
WHERE (NOT afscp_permit.field_name=vtable.field_name) 
AND (afscp_permit.field_name=vtable.field_name) 
+0

Supprimer les doublons basés sur une colonne spécifique ou une rangée entière? – Bala

+0

Et qu'est-ce qui ne va pas ... que se passe-t-il? –

+0

dupliquer la valeur d'une seule colonne appelée field_name, si elle existe déjà, puis supprimer cette ligne – chaya

Répondre

0

suivant peut aider s'il n'y a pas de bug dans votre SGBD et aucune contrainte ne la manière:

ALTER IGNORE TABLE afscp_permit ADD UNIQUE INDEX field_name_index (field_name); 
0

Que diriez-vous de créer une table temporaire avec le mêmes colonnes et faire:

INSERT INTO temp SELECT DISTINCT * FROM afscp_permit; 
DELETE FROM afscp_permit; 
INSERT INTO afscp_permit SELECT * FROM temp; 
DROP TABLE temp; 
Questions connexes