我有一个非常特殊的问题,我想在SQL中解决。我需要确保相同questionID的optionOrder来自0- [任意数字]。
例如, questionID = 18386 的行,他们的 optionOrder 现在是 1,2,3,4 。他们需要 0,1,2,3 。
如果行类似 1,2,4 ,则需要 0,1,2
我对不正确的语法感到抱歉。
答案 0 :(得分:2)
在MySQL中,您可以使用变量执行此操作:
set @rn := 0;
set @q := -1;
update table t
set optionorder = (case when @q = questionid then (@rn := @rn + 1)
when (@q := questionid) is not null then (@rn := 0)
else -1 -- should never happen
end)
order by questionid, optionorder;
由于order by
,您需要将变量设置在update
之外。