请问一下:
下面的三条SQL语句:
(1)用select into order by备份表old_tb到表new_tb,并使得new_tb的排序不同于old_tb; 
(2)为new_tb设置主键;
(3)select * from new_tb现在的问题是:执行(1)和(3)没有问题,但接着再执行(2)和(3),会发现new_tb表的排序规则又与old_tb相同了,为什么会是这样子的呢?非常感谢

解决方案 »

  1.   

    1
    SELECT * INTO NEW_TB FROM OLD_TB ORDER BY ID DESC
      

  2.   

    @SQL77 多谢了 只是有点儿看不太明白你的意思我的old_tb是按照字段rec_no来排序的
    而三条语句是这样子的:
    (1)select a.* into new_tb from old_tb a,c_priority b,p_kind c Where a.c_code = b.c_code And a.p_code = c.p_code order by a.o_date,a.requery_date,b.c_priority,c.p_kind desc (new_tb的排序变了) 
    (2)alter table new_tb with nocheck add CONSTRAINT pk_name1 PRIMARY KEY CLUSTERED (rec_no) 
    (3)select * from new_tb 
      

  3.   

    因为 你2中把rec_no重新作为主键。。
    那么他排序是按照这个rec_no升序排的 
    而你原来的表rec_no也是主键 也是按它升序排序 所以 。问题关键就是 列作为主键 那就上面有聚集索引 默认升序排序