[英]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 function:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.