2012-10-30 142 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”子句,这是原始语句的问题。 –