2011-10-04 48 views
1

我想要創建一個查詢,更新一個int基於id爲1更高的行的int。如何基於同一表中的anoter行進行更新?

我試過這個查詢,但它說我無法在更新語句中標記該表。但是,我如何在我的子查詢中引用它?

update t1 a set `int1` = (select `int1` from t1 b where b.id=a.id+1); 

我該如何克服我無法使用別名?

回答

2

嘗試這一個 -

UPDATE 
    t1 a 
    JOIN t1 b 
    ON b.id = a.id + 1 
SET 
    a.int1 = b.int1; 

如果有id值孔,查詢可能改變。

+0

它的工作原理,但正如他所說,ON子句應該是:ON b.id = a.id + 1 – Dippi

+0

哦,是的。我改變了答案。 – Devart

+0

謝謝。出於好奇,爲什麼我的例子不起作用?任何人都可以解釋嗎? –