如果可以清空的再插入的话, 试试这个truncate table 原来的表insert into 原来的表 select number pai,cast(number as varchar) spai from master..spt_values where type='P' and number between 1001 and 1999
楼主的表中的字段应该不止这两个。select pai,spai,identity(int,1,1) as rId into #t from tablename order by pai,spai update tablename set pai=1000+a.rId,spai=convert(varchar(10),(1000+a.rId)) from #t as a where pai=a.pai and spai=a.spai
稍微完善一下select pai,spai,identity(int,1001,1) as rId into #t from tablename order by pai,spai update tablename set pai=a.rId,spai=convert(varchar(10),a.rId) from #t as a where pai=a.pai and spai=a.spai
select number pai,cast(number as varchar) spai
from master..spt_values where type='P' and number between 1001 and 1999
用row_number 生成行号 +1000
然后update 掉原来的id ,
再把标识种子改成从1000开始,然后再插入就是从1000开始了。
update tablename set pai=1000+a.rId,spai=convert(varchar(10),(1000+a.rId)) from #t as a where pai=a.pai and spai=a.spai
update tablename set pai=a.rId,spai=convert(varchar(10),a.rId) from #t as a where pai=a.pai and spai=a.spai