2011-06-29 7 views
1

J'essaie de mettre à jour une colonne spécifique dans une table avec des données de la colonne d'une autre table. J'ai essayé d'exécuter la commande ci-dessous, mais j'obtiens une erreur de syntaxe à la ligne 3.Instruction de mise à jour MySQL

UPDATE af_application af 
SET application_price=rss.application_price 
FROM rss_applications rss 
WHERE af.application_id=rss.application_id 

Répondre

4
UPDATE af_application af, rss_applications rss 
SET application_price=rss.application_price 
WHERE af.application_id=rss.application_id 
+0

Merci, ça a marché mais c'est vraiment lent. Est-ce que tu sais pourquoi? – David

+0

@David: est-ce que 'application_id' est couvert par un index dans la table' rss_applications'? Et combien de lignes sont mises à jour? – zerkms

+0

que voulez-vous dire par 'index'? Voulez-vous dire si 'application_id' est la clé primaire? Si c'est le cas, 'application_id' a été défini comme la clé primaire de la table. Seulement ~ 6000 enregistrements sont mis à jour. – David

3

Vous ne pouvez pas utiliser FROM dans une déclaration UPDATE. Vous devrez utiliser JOIN à la place.

UPDATE af_application af 
JOIN rss_applications rss 
ON af.application_id=rss.application_id 
SET af.application_price=rss.application_price 

Pour plus d'informations, consultez http://dev.mysql.com/doc/refman/5.0/en/update.html et http://dev.mysql.com/doc/refman/5.0/en/join.html.

+0

J'ai essayé votre suggestion et j'obtiens une erreur de syntaxe à la ligne 3 'JOIN ...' – David

+0

@David - Désolé, j'ai inversé accidentellement 'SET' et' JOIN'! J'ai mis à jour la réponse.Si c'est lent, assurez-vous que vous avez des index sur les champs 'application_id' dans les deux tables –

+0

Merci pour l'aide. – David