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

Posted

技术标签:

【中文标题】对第一个表的数据进行排序后从另一个表插入到表中【英文标题】:Insert into table from another table after sorting data of first table 【发布时间】:2012-03-27 06:30:02 【问题描述】:

我在 SP 中做这样的事情,

insert into @FilteredTbl select * from @MasterTbl

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

我该怎么做?

【问题讨论】:

insert into at FilteredTbl (select * from (select * from at MasterTbl order by field) as a) social.msdn.microsoft.com/Forums/en/transactsql/thread/… ***.com/questions/263101/… Preserving ORDER BY in SELECT INTO的可能重复 【参考方案1】:

可能是这样的:

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

【讨论】:

我在这里遗漏了什么......不是所有这些解决方案都不正确吗?订单无法保证。 “4. 使用带有 ORDER BY 的 SELECT 来填充行的 INSERT 查询保证了标识值的计算方式,但不保证插入行的顺序” blogs.msdn.com/b/sqltips/archive/2005/07/20/441053.aspx 是的,上面的查询不会像上面的链接中解释的那样工作。【参考方案2】:

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

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

【讨论】:

如果没有“ROW_NUMBER()”,将数据插入到带排序的临时表中不起作用。仅适用于 "ROW_NUMBER()" 。谢谢杰勒姆【参考方案3】:

您可以在 select 语句中使用 order by class

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

【讨论】:

【参考方案4】:
INSERT INTO @FilteredTbl SELECT * FROM @MasterTbl AS mtb ORDER BY mtb.OrderbyColumn [desc]

这里 desc 是可选的,如果你想按你的列按降序排序而不是添加 ir 否则不需要添加

【讨论】:

【参考方案5】:

在插入另一个表之前,请按照您的需要对表进行排序。

喜欢:

Select * From @MasterTbl m Order By m.ColumnName

然后插入到你的新表中

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

您还可以使用Where 子句过滤您的@MasterTbl

【讨论】:

【参考方案6】:

你应该在你的表中添加身份然后它会像那样排序

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 

【讨论】:

minus1 我们在这里不需要任何额外的列,因为表已经有了它的主键。

以上是关于对第一个表的数据进行排序后从另一个表插入到表中的主要内容,如果未能解决你的问题,请参考以下文章

Laravel错误将数据从另一个表插入到表中

我想将表单中的数据插入到表中,然后从另一个表中选择另一个数据并使用 PHP 插入到第三个表中

利用vba怎样编写将工作表中第三行到最后一行(不确定)的数据复制并插入到另一个工作表的第二行前?

Mysql从另一个数据库创建到表的符号链接

直接插入排序

数据结构53:二叉排序树(二叉查找树)