簡體   English   中英

更新 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 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM