用户角色表结构如下:
UserID  RoleID
1             2
1             3
1             4更新为 
UserID  RoleID
1             1
1             3
1             5可以用先删除重新添加实现,但觉得效率太低了,有其他方式实现吗?请诸位指点

解决方案 »

  1.   

    declare @num int
    set @num=-1
    update tb set RoleID=@num,@num=@num+2
      

  2.   


    update t set
    RoleID=-1+rownum*2
    from 
    (select row_number() over(order by (select 0)) as rownum, * from tb) t
      

  3.   

    可能我表达不够清楚,roleID不是固定的,而是用户选择的,我用以上数据仅是想说明出现这种情况,用户(UserID 1)被分配了2 3 4这3种角色后,通过用户操作,可以变为是1 3 5 这3种角色,即RoleID是根据用户的选择来获取的,而不是有一定的规律,感谢回复
      

  4.   

    直接调用set属性将其clear()后,再添加啊!!!
      

  5.   

    sql语句,除了用先删除再添加这种思路,还有其他思路吗?
      

  6.   


    修改前 修改后
    ---------------------------------------
    UserID RoleID ||UserID RoleID
    -------------------------------------
    1 2 1 1 Update
    1 3 1 3 Update
    1 4 1 5 Update
    1 7 Insert每一次操作可以通過一個transaction 來控制。