select * from A order by id

解决方案 »

  1.   

    create clustered index index_name on A(ID)
    go
    select * from A
      

  2.   

    select id , new_id = (select count(1) from a where id < t.id) + 1 from a t
      

  3.   


    idntity列未必与记录物理顺序对应。
      

  4.   


    idntity 它本来就是自动编号的,,你加一条记录进行,你自动加1,怎么说不是与物理记录对应呢
      

  5.   

    就好像,你在磁盘D上有个文件 x.txt, 你再放个y.dat,z.avi ,不是说文件是后面建它的地址就会靠后的.而且文件存放的位置还可能是不连续的。
    其实都是一样的道理, 你整理磁盘碎片后,系统尽可能的把文件放在连续的空间。
    就像你打开文件夹,排列图标,按修改时间一样,这种显示的顺序是逻辑上的。
    对你的表而言
    你加一条记录,自动标识列加1,你认为一行新记录被追加在最后, 这些都是逻辑上的, 物理上记录顺序怎么存,并不是你想的那样。
    建立聚集索引,则会将记录顺序重排。
      

  6.   

    问题是这个表就三个字段"  id(int identity(1,1) cnName(varchar(50)),enName(varchar(50))也没建聚集索引,
      

  7.   

    不一定要建了才会这样,可能插入的时候物理顺序与id大小走向并不一致。如果你是指以前是id顺序排的,而没有进行什么操作,突然就变成乱序了,这倒是有点奇怪,否则就很正常。
      

  8.   

    并且select * from A 的时候,它输出的也是按这种“1,2,8,3,4,5,6 ”的乱序出来的以前我也有遇到这种现象,但我ID索引重索引一次,就解觉,但这次就是不行