将自动增量字段更新为最高值+ 1

时间:2015-01-23 20:13:01

标签: mysql auto-increment

如何更新现有行的id(自动增量)字段,以便为其提供通常自动分配给新插入的值(即最高ID + 1)?

http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html州:

“...您还可以明确地为该列指定0以生成序列号。”

但这似乎不是真的。我已经尝试将值赋值为0,它就是这样......将值设为0。

我考虑过删除并重新插入行,但这看起来很麻烦。

也尝试过:

UPDATE example_table
SET id = (SELECT id+1 FROM example_table ORDER BY id DESC LIMIT 1)
WHERE id = 1000;

返回错误:您无法在FROM子句中为更新指定目标表'example_table'

UPDATE example_table SET id = max(id)+1 WHERE id = 1000;

返回错误:无效使用组功能

这看起来应该很容易......我错过了什么?

2 个答案:

答案 0 :(得分:2)

MySQL不允许在from子句中使用表进行更新。 你可以将它作为子查询

UPDATE example_table
     SET id= (SELECT maxId
              FROM (SELECT MAX(id) + 1 AS maxId
                    FROM example_table
                   ) t
              )
    WHERE id = 1000;

答案 1 :(得分:1)

您也可以使用join

执行此操作
UPDATE example_table CROSS JOIN
       (SELECT MAX(id) + 1 as nextid
        FROM example_table
       ) maxet
    SET id = maxet.nextid
    WHERE id = 1000;