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

Update autoincrement field to highest value + 1

如何更新现有行的 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;

其中 returns 错误:您无法在 FROM 子句

中为更新指定目标 table 'example_table'

和:

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

其中returns错误:分组功能使用无效

这看起来应该很简单...我错过了什么?

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

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

您也可以使用 join:

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