近段时间做项目时碰到一个问题,差点载了个大跟斗。情况是这样子的:
源数据有31655条记录,在源数据中有一个从1排到31655的增1序号,由于我程序中排序是按降序输出,懒得改程序了,所以,就在导入数据前做一个增量为-1的列,种子为31655,按道理来说,应该没问题的吧,结果,生成后,没核对结果直接导入生产环境,出问题了排序的结果乱了。表结构大体如下:
s s_desc c1 c2......(其中,s为自增1的int类型,s_desc为自减1的int类型,种子为31655)
1 31655 A+ B
2 31654 A A+
. . . .
. . . .
. . . .对比一下结果就会发现,在s在1240左右的时候,s_desc突然就从跳到几百有谁能告诉我这是什么问题引起的?貌似int没超界吧,毕竟int有32bit呢,足够用了
源数据有31655条记录,在源数据中有一个从1排到31655的增1序号,由于我程序中排序是按降序输出,懒得改程序了,所以,就在导入数据前做一个增量为-1的列,种子为31655,按道理来说,应该没问题的吧,结果,生成后,没核对结果直接导入生产环境,出问题了排序的结果乱了。表结构大体如下:
s s_desc c1 c2......(其中,s为自增1的int类型,s_desc为自减1的int类型,种子为31655)
1 31655 A+ B
2 31654 A A+
. . . .
. . . .
. . . .对比一下结果就会发现,在s在1240左右的时候,s_desc突然就从跳到几百有谁能告诉我这是什么问题引起的?貌似int没超界吧,毕竟int有32bit呢,足够用了
不就可以了,干嘛要个新的列
你出现错误的原因 估计重新在做一次就没问题了
id int,
ids int
)declare @i int,@j int
set @i=1
set @j=31655
while @i<31655 and @j>1
begin
insert into j
values(@i,@j)
set @i=@i+1
set @j=@j-1
end在3625行的时候突然就跳成这样了
3621 28035
3622 28034
3623 28033
3624 28032
25369 6287
25370 6286
25371 6285
25372 6284
怎么回事呢
上面的语句写的有问题吗
高手赐教
然后我用“select * from j where id = 3625”和“select count(*) from j”查询,
发现有id为3625的数据,表中的总条数为31654
可见:所有的循环都已经成功执行了插入操作。
查询的情况的出现,可能和sqlserver中插入操作的优化,以及数据库的存储机制有关吧!