2010-09-28 59 views
2

我想寫這樣的查詢:如何編寫有效的查詢(使用自動增量變量更新)?

SET @id := 0; 
UPDATE table1 
SET 
    field1 = @id + 1, 
    @id := @id + 1 

並獲得錯誤信息:

#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 '@id := @id + 1' at line 3 

如何正確地寫這個查詢?

回答

2

你可以像這樣做,與分配和增量合併:

SET @id := 0; 
UPDATE table1 
SET 
    field1 = (@id := @id + 1) 

編輯:你甚至可以使用ORDER BY在這樣一個UPDATE查詢指定數字的分配順序。

+0

THX,它的工作! – nex2hex 2010-09-28 15:15:35

0

你需要的是一個序列。你可以使用this implementation例如:

INSERT INTO seq VALUES('s1',1); 
UPDATE table1 SET field1 = seq('s1'); 
0

你只需要將其分成三條而不是兩條。

SET @id := 0; 
UPDATE table1 
SET field1 = @id + 1; 
SET @id := @id + 1;