需求描述
将图片中的红框框起来的数据修改成1234。即变得有序。
问题
在进行更新时,由于给每一列添加了唯一索引,所以在更新时不能直接就使用update去更新每一列,这样会出现重复,数值,导致更新失败。
具体是什么情况呢。下面解释一下。
直接update不可行的原因。
很简单的我们可以想到的就是使用
update [表名] set [列名] = [值] where [条件],
然后多写几条,让它更新。但是由于唯一索引的存在,这样更新会失败。
这是由于更新时,如果我们想把5变成4的时候,4此时还存在,由于唯一索引的存在,就导致插入失败。
所以在更新的时候,我们可以手动避免这个问题。也就是按顺序更新,
3—>2 4—>3 5---->4 这样就可以避免唯一索引的错误
但是这样会很麻烦,首先需要,选择对要修改的行,使得代码太多,容易出现错误,又要一一的匹配,如果下次需求必须为倒叙更新呢?这样就会更麻烦。
解决办法 case when
解决办法呢便是使用sql中的 case when 语句
使用这个方法,不管是倒序、正序都可正常修改,并且代码量也很少,更加的简洁。