例如,表格中有几个项目
id |name|info
1 |Jim |Male
2 |Rob |Male
表的id是auto_increment,现在我想将Jim的行更新到Rob的底部,并获得最新的id,又名
id |name|info
2 |Rob |Male
3 |Jim |Male
并获取(3)的id,sql表达式是什么?
答案 0 :(得分:4)
由于您无法在同一更新查询中选择max(id),因此必须将max(id)定义为变量。您需要的查询:
SET @max = (SELECT max(`id`) FROM `table` FOR UPDATE);
UPDATE `table` SET `id` = @max+1 WHERE `name` = "Jim";
编辑 :您不应该更新ID,因为它是唯一标识符。如果要使用排序方法,则应添加整数列“position”。
答案 1 :(得分:1)
没有自动增量列的更新,您可以删除吉姆斯行然后再次插入它,它将是id = 3
DELETE FROM `table` where id = 1
然后
INSERT INTO `table` (name , info) VALUES ('jim' , 'male')