排序第一个表的数据后,从另一个表插入表

时间:2012-03-27 06:30:02

标签: sql sql-server sql-server-2008 sql-server-2008-r2

我在SP中做这样的事情,

insert into @FilteredTbl select * from @MasterTbl

但现在问题是我希望在添加到@FilteredTbl之前对@MasterTbl的数据进行排序,

我该怎么做?

6 个答案:

答案 0 :(得分:6)

也许是这样的:

INSERT INTO @FilteredTbl 
SELECT * FROM @MasterTbl AS tbl
ORDER BY tbl.OrderbyColumn

答案 1 :(得分:1)

尝试以下方法将排序结果插入临时表。使用ROW_NUMBER ORDER BY表结果

DECLARE @FilteredTbl AS TABLE
(
    RowID INT
    [Column_1]
    [Column_2]
      .
      .
)

insert into @FilteredTbl 
select ROW_NUMBER()OVER(ORDER BY [ShortColumn]),[Field_1],[Field_2]... from @MasterTbl

答案 2 :(得分:0)

您可以在select语句中按类使用

insert into @FilteredTbl 
    select * from @MasterTbl
    order by <column name>

答案 3 :(得分:0)

在插入另一个表之前,请根据需要对表进行排序。

像:

Select * From @MasterTbl m Order By m.ColumnName

然后插入新表

Insert Into @FilterTbl Select * From @MasterTbl m Order By m.ColumnName [DESC]

您还可以使用Where条款

过滤@MasterTbl

答案 4 :(得分:0)

INSERT INTO @FilteredTbl SELECT * FROM @MasterTbl AS mtb ORDER BY mtb.OrderbyColumn [desc]

如果您希望按列顺序按降序排序,则desc是可选的,否则无需添加

答案 5 :(得分:-1)

你应该为你的表添加标识然后它将按那样排序

CREATE TABLE #test (
    s int IDENTITY (1, 1),
    ID int,
    Name varchar(50),
    part int
);

INSERT INTO  #test (ID,Name,Part)
SELECT ID, Name, Part FROM Table_1 ORDER BY ID DESC
SELECT * FROM #test