2011-06-29 202 views
1

我正在嘗試使用另一個表的列中的數據更新表中的特定列。我試圖運行下面的命令,但我在第3行得到一個語法錯誤MySQL更新語句

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

回答

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

謝謝,這工作,但它真的很慢。你知道爲什麼嗎? – David

+0

@David:是否在'rss_applications'表中的任何索引覆蓋了'application_id'?多少行更新? – zerkms

+0

'index'是什麼意思?你指的是'application_id'是否是主鍵?如果這樣'application_id'被設置爲表的主鍵。只有約6000條記錄被更新。 – David

3

你不能在UPDATE語句中使用FROM。您需要改用JOIN

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

欲瞭解更多信息,請參閱http://dev.mysql.com/doc/refman/5.0/en/update.htmlhttp://dev.mysql.com/doc/refman/5.0/en/join.html

+0

我嘗試了您的建議,並在第3行'JOIN ...'中收到語法錯誤...' – David

+0

@David - 對不起,我不小心倒過了'SET'和'JOIN'!我更新了答案,如果速度很慢,請確保你在兩個表中的'application_id'字段上都有索引 –

+0

感謝您的幫助。 – David