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

在MySQL中按顺序更新双(2-D)列,mysql,sql,sequential,Mysql,Sql,Sequential,我有一个类似于这个问题的问题: 然而,我还有第二个专栏,也“有时”需要更新。例如,考虑这个表: 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,则需要同时

我有一个类似于这个问题的问题:

然而,我还有第二个专栏,也“有时”需要更新。例如,考虑这个表:

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
想法?

试试:

SET @rank:=0;  
UPDATE `myTable` SET
X = @rank:= @rank + if(y=0,1,0)
ORDER BY X
演示-->