我遇到了一个非常特殊的问题,想在SQL中解决。我需要确保同一questionID的optionOrder从0- [任何数字]开始。
例如,questionID = 18386的行,其optionOrder现在为1,2,3,4。它们必须为0、1、2、3。
另外,如果这些行是这样的1,2,4,则必须为0,1,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
之外设置变量。关于mysql - 修改列值使其顺序正确,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32097537/