select * into #ww from biao1 order by col1
insert into #ww select * from biao1 order by col1

解决方案 »

  1.   

    insert into #tmp select top 100 percent * from table1 order by col1
      

  2.   

    select * into #t from a2 where 1 = 2
    go
    insert #t
    select * from a2 order by id
    go
    可以的,没有问题。
      

  3.   

    能,但最后顺序不一定就是你想要的顺序,如果你要求有顺序,可以建立聚合索引.创建索引
    确定了索引设计后,便可以在数据库的表上创建索引。Microsoft® SQL Server™ 2000 自动创建唯一索引,以强制实施 PRIMARY KEY 和 UNIQUE 约束的唯一性要求。除非表中已存在聚集索引,或者显式指定了非聚集索引,否则将会创建一个唯一的聚集索引,以实施 PRIMARY KEY 约束。除非显式指定了聚集索引,否则,默认情况下创建唯一的非聚集索引以强制 UNIQUE 约束。如果需要创建不依赖于约束的索引,可以使用 CREATE INDEX 语句。默认情况下,如果未指定聚集选项,将创建非聚集索引。创建索引时须考虑的其它事项包括: 只有表的所有者可以在同一个表中创建索引。
    每个表中只能创建一个聚集索引。
    每个表可以创建的非聚集索引最多为 249 个(包括 PRIMARY KEY 或 UNIQUE 约束创建的任何索引)。
    包含索引的所有长度固定列的最大大小为 900 字节。例如,不可以在定义为 char(300)、char(300) 和 char (301) 的三个列上创建单个索引,因为总宽度超过了 900 字节。
    包含同一索引的列的最大数目为 16。 
    在使用 CREATE INDEX 语句创建索引时,必须指定索引、表以及索引所应用的列的名称。作为 PRIMARY KEY 或 UNIQUE 约束的一部分或使用 SQL Server 企业管理器创建的新索引,会根据数据库表的名称,自动获得系统定义的名称。如果在一个表上创建多个索引,这些索引的名称被追加 _1、_2 等。必要时可对索引重新命名。说明  当前数据库正在备份时不能在其上创建索引。
    如果在具有多个辅助索引的表上创建聚集索引,则必须重建所有辅助索引,使它们包含聚集键值而非行标识符 (RID)。同样,如果在具有多个非聚集索引的表上删除聚集索引,所有非聚集索引将作为 DROP 操作的一部分重建。这在大型表上会花很长时间。在大型表上生成索引的首选方法是以聚集索引开始,然后生成非聚集索引。除去所有索引时,首先除去非聚集索引,最后除去聚集索引。这样,就无需重建索引。聚集索引
    在创建聚集索引时,将会对表进行复制,对表中的数据进行排序,然后删除原始的表。因此,数据库上必须有足够的空闲空间,以容纳数据复本。默认情况下,表中的数据在创建索引时排序。但是,如果因聚集索引已经存在,且正在使用同一名称和列重新创建,而数据已经排序,则会重建索引,而不是从头创建该索引,以自动跳过排序操作。重建操作会检查行是否在生成索引时进行了排序。如果有任何行排序不正确,即会取消操作,不创建索引。唯一索引
    创建唯一索引可以确保任何生成重复键值的尝试都会失败。如果创建的单个查询导致添加了重复的和非重复的键值,SQL Server 会拒绝所有的行,包括非重复的键值。例如,如果一个单个的插入语句从表 A 检索了 20 行,然后将它们插入到表 B 中,而这些行中有 10 行包含重复键值,则默认情况下所有 20 行都将被拒绝。不过,在创建该索引时可以指定 IGNORE_DUP_KEY 子句,使得只有重复的键值才被拒绝,而非重复的键值将被添加。在上面的例子中,将只会拒绝 10 个重复的键值,其它 10 个非重复的键值将被添加到表 B 中。如果有任何重复的键值,便不能创建唯一索引。例如,如果要在 a 列和 b 列上创建唯一的组合索引,而表中有两行的 a 列同为值 1,b 列同为值 2,则无法创建唯一索引。说明  如果一个单个的列中有不止一行包含 NULL,则无法在该列上创建唯一索引。同样,如果列的组合中有多行包含 NULL 值,则不能在多个列上创建唯一索引。在创建索引时,这些被视为重复的值。
      

  4.   

    insert 表 select 列1,列2 from 表 order by 列
      

  5.   

    order是肯定支持的.
    写出你的出错语句来看看
    除非你用了类似下面的语句就不行
    insert into 表 select * from(select * from 表 order by 列) a这种情况要改为:
    insert into 表 select * from(select top 100 percent * from 表 order by 列) a
      

  6.   

    order是肯定支持的.
    写出你的出错语句来看看
    除非你用了类似下面的语句就不行
    insert into 表 select * from(select * from 表 order by 列) a这种情况要改为:
    insert into 表 select * from(select top 100 percent * from 表 order by 列) a
      

  7.   

    order是肯定支持的.
    写出你的出错语句来看看
    除非你用了类似下面的语句就不行
    insert into 表 select * from(select * from 表 order by 列) a这种情况要改为:
    insert into 表 select * from(select top 100 percent * from 表 order by 列) a
      

  8.   

    下面是我的查询语句,单独执行select时没错,但INSERT时就说order有语法错误。
    请指教。谢谢!
    INSERT zpgxk(
    card_id,
    isnuline,
    bb ,
    ljth,
    gxh ,
    kxh ,
    sxh ,
    gbh ,
    gbmc,
    gbnr,
    gjbh,
    gjmc,
    gjgs,
    fzcl,
    gzgyde,
    flgyde  
     ) 
     
    ( SELECT 
    @card_id,
    isnuline,
    bb ,
    ljth,
    gxh ,
    kxh ,
    sxh ,
    gbh ,
    gbmc,
    gbnr,
    gjbh,
    gjmc,
    gjgs,
    fzcl,
    gzgyde,
    flgyde  
     FROM zpgxk WHERE card_id =@sourceCard_id ORDER BY zpgxk.LINE_ID ASC 
    )
      

  9.   

    多了一对括号而已,不是order有问题,改成下面的语句就没事了.
    INSERT zpgxk(
    card_id,
    isnuline,
    bb ,
    ljth,
    gxh ,
    kxh ,
    sxh ,
    gbh ,
    gbmc,
    gbnr,
    gjbh,
    gjmc,
    gjgs,
    fzcl,
    gzgyde,
    flgyde  
     ) 
     
     SELECT 
    @card_id,
    isnuline,
    bb ,
    ljth,
    gxh ,
    kxh ,
    sxh ,
    gbh ,
    gbmc,
    gbnr,
    gjbh,
    gjmc,
    gjgs,
    fzcl,
    gzgyde,
    flgyde  
     FROM zpgxk WHERE card_id =@sourceCard_id ORDER BY zpgxk.LINE_ID ASC