如何更新现有行的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;
返回错误:无效使用组功能
这看起来应该很容易......我错过了什么?
答案 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;