2011-08-16 32 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