Copie de lignes avec gestion des doublons dans des tables de schéma identiques
Vous souhaitez transférer des lignes de la table 'srcTable' vers 'destTable' tout en évitant les doublons . Cependant, l'utilisation d'une sous-requête dans une clause WHERE n'a pas fonctionné efficacement pour vous.
Résoudre le problème avec les clauses WHERE
L'erreur réside dans l'absence d'une sous-requête appropriée clause dans la sous-requête pour identifier les doublons. Ajoutez les conditions nécessaires dans votre sous-requête comme suit :
INSERT INTO destTable SELECT Field1, Field2, Field3, ... FROM srcTable WHERE NOT EXISTS(SELECT * FROM destTable WHERE (srcTable.Field1 = destTable.Field1 AND srcTable.Field2 = destTable.Field2 ... etc.) )
Approche alternative utilisant une jointure externe
Vous pouvez également envisager d'utiliser une jointure externe pour une solution plus concise :
INSERT INTO destTable SELECT s.field1, s.field2, s.field3, ... FROM srcTable s LEFT JOIN destTable d ON (d.Key1 = s.Key1 AND d.Key2 = s.Key2 AND...) WHERE d.Key1 IS NULL
Gestion des doublons dans la source Table
Si votre problème concerne spécifiquement les lignes en double dans la table source, envisagez d'utiliser une clause distincte dans votre instruction d'insertion :
INSERT INTO destTable SELECT Distinct field1, field2, field3, ... FROM srcTable
Recommandations supplémentaires
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!