在MySQL中按顺序更新

时间:2014-02-07 11:55:45

标签: mysql

有这张桌子:

ID      SEQ     C2      C3      C4      C5

359     1       287     1       2       1

360     1       287     1       1       1

361     2       287     1       2       1

362     2       287     1       1       1

363     4       287     1       2       1

368     4       287     1       2       1

369     5       287     1       1       1

370     7       287     1       2       1 

371     4       287     1       1       1

372     6       287     1       2       1

并且只想将SEQ列更新为此输出:

ID      SEQ     C2      C3      C4      C5 

359     1       287     1       2       1

360     1       287     1       1       1

361     2       287     1       2       1

362     2       287     1       1       1

363     3       287     1       2       1

368     4       287     1       2       1

369     3       287     1       1       1

370     5       287     1       2       1

371     4       287     1       1       1

372     6       287     1       2       1

列c2,c3,c4,c5定义了一项服务。列SEQ定义了版本,ID = 361是ID 359中定义的新服务版本。

order byC2C3C4C5,并按顺序删除差距(SEQ列)。< / p>

由于

1 个答案:

答案 0 :(得分:0)

完成!

SET @rownumber = 0;

更新表t set t.SEQ =(if(t.seq&lt; @ rownumber,@ rownumber:= 1,@ rownumber:= @ rownumber + 1)) 顺序为t.C2,t.C3,t.C4,t,C5,t.SEQ;