2010-08-23 7 views
0

J'ai besoin d'aide avec une instruction mySQL.MySQL: Mise à jour des cellules

J'ai une table mySQL qui ressemble à ceci:

Name Year Score Address  Zip 
Joe 2010 A  NULL   NULL 
Joe 2009 B  123 Main St. 03755 
Mary 2010 B  NULL   NULL 
Mary 2009 C  234 Elm St. 03866 

je dois saisir les adresses 2009 et les fermetures éclair et les mettre dans leurs cellules respectives 2010. Malheureusement, j'ai beaucoup de noms. Les noms sont distincts - Joe se réfère seulement à un Joe et Mary se réfère à une seule Mary.

Je sais qu'il serait préférable d'avoir une table séparée avec les adresses. Mais, j'ai simplifié un peu mon exemple. La table n'est pas conçue parfaitement, mais ce qui précède est un problème que je dois résoudre.

Un conseil?

Merci, Laxmidi

Répondre

1

En mettant de côté la nature dénormalisé de ce tableau (que vous avez reconnu), vous pouvez utiliser un autojointure pour y parvenir:

UPDATE mytable a 
INNER JOIN mytable b 
    ON a.Name = b.Name 
    AND a.Year = 2010 
    AND b.Year = 2009 
SET a.Address = b.Address, 
    a.Zip = b.Zip; 
+0

Dont vous dire a. Adresse et b.Zip dans le 'SET'? – Stephen

+0

@Stephen, l'alias "a" fait ici référence aux enregistrements de 2010 (qui sont à mettre à jour). Pas sûr de ce que vous voulez dire. –

+0

@Ben Votre déclaration d'origine dit 'SET Adresse = b.Address, Zip = b.Zip' - c'est-à-dire qu'il s'agit d'adresses génériques et de zips. Mon commentaire était trompeur cependant, j'ai fait une faute de frappe sur le 'b.zip' - aurait dû être 'a.zip' – Stephen