将自动增量字段更新为最高值 + 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;
如何更新现有行的 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;