更新 int 列值 mysql

Update int column values mysql

我想更新一个 int 列值,我想为最新插入的记录将 int 列的值设置为 1,并为所有前面的记录递增 1,直到达到了 Primary Id = 1 的记录。我有大约 1400 条记录,所以我想要的是 1400 条记录应该为该 int 列获得 1,而 1399 应该获得 2 等等,直到所有记录完成。更新查询应该怎么写才能实现。谢谢

请注意,这将是一次性操作。

如果你是运行 MySQL 8.0,你可以使用row_number()。假设您有一个名为 id 的唯一排序列,并且您想要更新列 new_id:

update mytable t
inner join (select id, row_number() over(order by id desc) new_id from mytable) x
    on t.id = x.id
set t.new_id = x.new_id

在早期版本中,一种选择是使用用户变量模拟 window 函数:

update mytable t
inner join (
    select t.id, @new_id := @new_id + 1 new_id
    from (select id from mytable order by id desc) t
    cross join (select @new_id := 0) x
) x on t.id = x.id
set t.new_id = x.new_id