将第一个表的数据排序后从另一个表插入到表中

问题描述 投票:0回答:7

我正在 SP 做类似的事情,

insert into @FilteredTbl select * from @MasterTbl

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

我怎样才能做到这一点?

sql sql-server sql-server-2008 sql-server-2008-r2
7个回答
4
投票

也许是这样的:

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

3
投票

尝试以下方法将排序结果插入临时表。使用 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

0
投票

我遇到了同样的问题,并通过将 id 作为身份添加到声明的表中来解决它

您的情况:

@FilteredTbl
 ID int identity not null,
 your columns...

插入排序数据时,它仍然按原样排序


-1
投票

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

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

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

如果您想按列降序排序,则 desc 是可选的,而不是添加 ir,否则无需添加


-1
投票

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

喜欢:

Select * From @MasterTbl m Order By m.ColumnName

然后插入到你的新表中

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

您还可以使用

Where
子句

过滤您的@MasterTbl

-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 
© www.soinside.com 2019 - 2024. All rights reserved.