如何编写有效查询(使用autoincrement变量更新)?

时间:2010-09-28 15:05:00

标签: mysql

我想写这样的查询:

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 

如何正确编写此查询?

4 个答案:

答案 0 :(得分:2)

您可以这样做,分配和增量合并:

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

编辑:你甚至可以在这样的UPDATE查询中使用ORDER BY来指定数字的分配顺序。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

您只需要将其分为三个语句而不是两个语句。

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

答案 3 :(得分:0)

请试试这个

declare @Count int
set @Count =0
update table1 set  @Count =column1=@Count +1