我遇到类似这个问题的问题:
updating columns with a sequence number mysql
但是,我有第二列也“有时”需要更新。例如,请考虑此表:
uID | X | Y
1 | 6 | 0
2 | 2 | 0
3 | 7 | 0
4 | 7 | 1
5 | 3 | 0
6 | 1 | 0
我希望'X'按顺序重新排序,我可以使用上面的链接解决方案:
SET @rank:=0;
UPDATE `myTable` SET
X = @rank:= @rank+1
ORDER BY X
但是,如果记录的Y值大于0,我需要同时更新其X.作为二维值的Y值需要保持其“X”。合理?所以我需要表格结束:
uID | X | Y
6 | 1 | 0
2 | 2 | 0
5 | 3 | 0
1 | 4 | 0
3 | 5 | 0
4 | 5 | 1
想法?
答案 0 :(得分:0)
尝试:
SET @rank:=0;
UPDATE `myTable` SET
X = @rank:= @rank + if(y=0,1,0)
ORDER BY X
演示 - > http://www.sqlfiddle.com/#!2/f158e/1