2010-11-19 5 views
2

J'ai une base de données d'informations client. Il y a des rangées séparées pour l'adresse de facturation et l'adresse de livraison avec un drapeau signifiant lequel; BA, SA. Beaucoup de dossiers sont réglés à BA donc j'ai des doublons pour chaque client. J'ai besoin de définir un enregistrement en double à SA. J'ai essayé cela mais il a mis à jour TOUS les enregistrements qui ont été dupliqués. Au lieu de cela, je veux mettre à jour seulement l'un des enregistrements en double;MySql UPDATE seulement un des enregistrements en double

UPDATE customer1 AS C1 JOIN 
(
SELECT Ca.user_id, C2.CID, Ca.address_type FROM 
customer1 AS Ca JOIN 
customer2 AS C2 ON CC.user_id = C2.CID 
GROUP BY Ca.user_id 
    HAVING COUNT(*) > 1 
) AS C2a ON 
C1.user_id = C2.CID 
SET C1.address_type = 'SA' 
+1

Pouvez-vous poster votre schéma de table? – InSane

Répondre

0

En ce qui concerne la base de données, les enregistrements en double sont indiscernables.

Je pense que votre meilleure option est d'ajouter un ID généré automatiquement (voir auto_increment) à chaque enregistrement. Vous pouvez ensuite identifier de manière unique l'enregistrement que vous souhaitez mettre à jour.

L'autre alternative consiste à copier les données de l'un des doublons, à les supprimer, à insérer un enregistrement puis à insérer l'autre avec la modification requise.

0

Vous devez normaliser vos schémas de table pour éviter les données dupliquées. Cela signifie, je suggère une table "adresse" avec toutes les adresses et étendre la table "client" par un champ adresse BA et adresse SA, pointant vers ces adresses.

Si vous devez maintenant "dupliquer" un enregistrement de BA vers SA, vous devez simplement placer le même addressID dans le champ SA, comme dans le champ BA.

1
... 
LIMIT 0,1 

Notez que comme d'autres l'ont dit, vous ne devriez jamais avoir des lignes en double dans votre base de données en premier lieu - il implique votre schéma est erroné. En outre, vous obtiendrez un avertissement en utilisant LIMIT sans ORDER BY

Questions connexes