假设一个表有两个字段id,inum。
数据如下:
1 1
2 null
3 2
4 null
5 3
6 4
7 null
如果想更新inum字段。得到如下结果:
1 1
2 5
3 2
4 6
5 3
6 4
7 7
应该如何解决?(将要更新的记录条数很多)

解决方案 »

  1.   

    create table test(id int identity(1,1),inum int)
    insert test(inum) select 1
    insert test(inum) select null
    insert test(inum) select 2
    insert test(inum) select null
    insert test(inum) select 3
    insert test(inum) select 4
    insert test(inum) select null
    --select * from testbegin tran
      declare @i int
      select @i=(select max(inum) from test)
      --select @i  update test set inum=@i,@i=@i+1 where inum is null  select * from test
    rollback trandrop table test
      

  2.   

    declare i int
    set @i=(select max(inum) from table)
    update table
    set @i=@i+1,inum = @i
    where inum is null
      

  3.   

    YiZhiNet(我姓义很多人都觉得奇怪) 
     update test set inum=@i,@i=@i+1 where inum is null
    ->
     update test set @i=@i+1,inum=@i where inum is null
      

  4.   

    不好意思 YiZhiNet的对的,本来以为和这个顺序有关
      

  5.   

    update test set inum=@i,@i=@i+1 where inum is null
    姓义的哥们:
    这句绝!
      

  6.   

    3x YiZhiNet(我姓义很多人都觉得奇怪) 。
    感谢各位捧场!