2011-08-16 30 views
3

如何使以下语句在MySQL中工作?在MySQL中使用子查询进行更新

UPDATE my_table t1 SET column_1 = 
(SELECT column_1 FROM my_table t2 WHERE t2.id = (t1.id - 1)) 
WHERE t1.type = 2 

我得到"You can't specify target table 't1' for update in FROM clause"错误。

回答

4

您可以用加入更新:

UPDATE my_table t1 
    JOIN my_table t2 ON t2.id = t1.id - 1 
SET t1.column_1 = t2.column_1 
WHERE t1.type = 2 
-1

尝试删除 “MY_TABLE” :)

UPDATE t1 SET column_1 = 
(SELECT column_1 FROM t2 WHERE t2.id = (t1.id - 1)) 
WHERE t1.type = 2 
+0

这是相同的表中两个查询。我想使用来自同一个表的数据,所以我使用t1和t2作为别名。 – RedDragon

+0

啊,对不起,我的坏。 – digi