mysql将一个项目id设置为自动增量最大id
例如,一个表中有几个项目mysql将一个项目id设置为自动增量最大id,mysql,Mysql,例如,一个表中有几个项目 id |name|info 1 |Jim |Male 2 |Rob |Male 表的id是自动递增的,现在我想将Jim的行更新到Rob的底部,并获取最新的id,aka id |name|info 2 |Rob |Male 3 |Jim |Male 获取(3)的id,sql表达式是什么 由于不能在同一个更新查询中选择max(id),因此必须将max(id)定义为变量。您需要的查询: SET @max = (SELECT max(`id`) FROM
id |name|info
1 |Jim |Male
2 |Rob |Male
表的id是自动递增的,现在我想将Jim的行更新到Rob的底部,并获取最新的id,aka
id |name|info
2 |Rob |Male
3 |Jim |Male
获取(3)的id,sql表达式是什么 由于不能在同一个更新查询中选择max(id),因此必须将max(id)定义为变量。您需要的查询:
SET @max = (SELECT max(`id`) FROM `table` FOR UPDATE);
UPDATE `table` SET `id` = @max+1 WHERE `name` = "Jim";
编辑:您不应该更新id,因为它是唯一的标识符。如果要使用排序方法,应该添加一个整数列“position”。因为不能在同一个更新查询中选择max(id),所以必须将max(id)定义为变量。您需要的查询:
SET @max = (SELECT max(`id`) FROM `table` FOR UPDATE);
UPDATE `table` SET `id` = @max+1 WHERE `name` = "Jim";
编辑:您不应该更新id,因为它是唯一的标识符。如果您想使用排序方法,您应该添加一个整数列“position”。自动增量列没有更新。您可以删除Jims行,然后再次插入它,它将是id=3
DELETE FROM `table` where id = 1
然后
“自动增量”列没有更新。您可以删除Jims行,然后再次插入它,它的id将为3
DELETE FROM `table` where id = 1
然后
这听起来好像您想将id用于某种目的,而不仅仅是识别记录,比如排序。不要那样做。这不是id的工作。这听起来好像你想将id用于某种目的,而不仅仅是识别记录,比如排序。不要那样做。这不是id的工作。您可能需要将更新的
添加到第一个查询中。以防有人在更新前偷偷进入并插入另一条记录。另外,除非你真的必须这样做,否则不要弄乱自动增量,它会咬你的。@Vatev:当然!我没有把重点放在安全性上,但是我编辑了我的答案以包含它。行是自动增量的,在我更新了id之后,我怎么能让自动增量继续?否则在我插入一个新的id后,该id将被复制。你必须更改TABLE TABLE auto_increment=max(id)…
,它会变得非常混乱。这就是为什么不应该更新id列!那个“因为我们数据库中的一些旧数据被污染了,我们必须将它们移到新的位置,而不能改变表的结构;您可能需要将更新的添加到第一个查询中。以防有人在更新前偷偷进入并插入另一条记录。另外,除非你真的必须这样做,否则不要弄乱自动增量,它会咬你的。@Vatev:当然!我没有把重点放在安全性上,但是我编辑了我的答案以包含它。行是自动增量的,在我更新了id之后,我怎么能让自动增量继续?否则在我插入一个新的id后,该id将被复制。你必须更改TABLE TABLE auto_increment=max(id)…
,它会变得非常混乱。这就是为什么不应该更新id列!这是因为我们数据库中的一些旧数据被污染了,我们必须将它们移动到新的位置,而不能改变表的结构;