在MySQL中按顺序更新双(2-D)列

时间:2013-12-13 16:11:22

标签: mysql sql sequential

我遇到类似这个问题的问题:

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

想法?

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