select identity(int,1,1) as xh,* into #a from TB 
UPDATE TB SET ID=B.XH FROM TB A,#A B WHERE A.关联=b.关联

解决方案 »

  1.   

    谢谢二位先. 还有个问题也帮忙解答一下吧
    我的表里还有一个字段为 "状态", 值为1,2,3,4,5
    我想为状态为1的行编上从从1开始的不重复的id,状态为2,3,4,5的也一样
    状态不同的行id可以重复
    这该怎么做啊?
      

  2.   

    alter table t add xxx int identity(1,1)
    go
    update t set id=(select count(*) from t a where a.xxx<=t.xxx and a.状态=t.状态)
    alter table t drop column xxx
    go
      

  3.   

    这个好办 你的主键是 id 就是那个自增的字段,你准备加的字段和tid
    declare @min int ,@max int
    update 表 set tid = 0 where 状态 = 1
    Select @min = min(id), @Max = Max(id) From 表 Where 状态 = 1
    while @min <= @max
    begin
      update 表 set tid = tid + 1 where id = @Min
      set @min = @min + 1
    end
    如果你想从1到5自己改一下就可以了
      

  4.   

    我是按照pbsql的方法做的,很简单啊
    不过也要感谢sankis,应该也可以的