簡體   English   中英

SQL 更新列並為每一行使用列的最大值

[英]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.

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