[英]SQL update column and use max value of a column for each row
我正在嘗試更新Program
表並為每一行使用program.programOrder
+ 1的最大值。 programOrder
必須是唯一的,所以我不想對所有更新使用相同的值,理想情況下我想重新計算每一行的最大值。
我收到以下錯誤:
您不能在 FROM 子句中指定目標表“p”進行更新
update Program p
set p.programOrder = (select max(programOrder) + 1 from Program)
where isActive = false;
我感謝任何幫助或提示。
有不同的方法可以做到這一點。 可能最簡單的使用變量。 那是這樣的:
select @rn := max(programOrder)
from program;
update Program p
set p.programOrder = (@rn := @rn + 1)
where isActive = false;
請注意,在最新版本的 MySQL 中不推薦使用這種變量,但這可能仍然是最方便的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.