2012-10-30 192 views
0

我遇到這個下面的查詢,它是給錯誤:更新與Where子句

UPDATE t_o 
SET t_o.mlm_order_id = mt.order_id 
FROM temp_orders t_o, mlm_transaction mt 
WHERE mt.v2_order_id = t_o.order_id 

錯誤是:

#1064 - You have an error in your SQL syntax; check the manual 
that corresponds to your MySQL server version for the right syntax to use near 
'FROM temp_orders t_o, mlm_transaction mt WHERE mt.v2_order_id = t_o.order_id' 
at line 3 

請幫助?

+2

UPDATE table_name的 SET列1 =值,列2 =值2,... WHERE some_column = SOME_VALUE正確的語法。再試一次。 – Anam

+0

在堆棧溢出: [採取看這裏] [1] [1]:http://stackoverflow.com/questions/1849726/convert-update-with-inner-join-from-sql -for-use-in-mysql –

回答

1

您正在使用的是語法SQLServer。這是MySQL

UPDATE temp_orders t_o 
     INNER JOIN mlm_transaction mt 
      ON mt.v2_order_id = t_o.order_id 
SET t_o.mlm_order_id = mt.order_id 
+0

這是使用連接進行更新的正確方法。 – hims056

+0

此查詢正在運行,但在一段時間後出現此錯誤:#1205 - 超出鎖定等待超時;嘗試重新啓動事務 –

+0

如何處理此錯誤:#1205 - 超出鎖定等待超時;嘗試重新啓動交易 –

0

你可以試試這個等效的,雖然未經測試:

UPDATE t_o 
SET t_o.mlm_order_id = mt.order_id 
WHERE t_o.mlm_order_id = (SELECT mt.v2_order_id FROM mlm_transaction mt WHERE mt.v2_order_id = t_o.order_id) 
1

還有一個版本 -

UPDATE temp_orders t_o, mlm_transaction mt 
SET t_o.mlm_order_id = mt.order_id 
WHERE mt.v2_order_id = t_o.order_id 
0

更新不使用FROM子句。

使用這樣的事情:

UPDATE table_name SET column1=value1, column2=value2,... WHERE some_column=some_value 
+0

這不是一個答案。你可以評論這個問題。或者您可以添加解決方案作爲答案。 – hims056

+0

我相信最重要的是知道更新不使用「FROM」子句,這是原始語句的問題。 –