【问题标题】: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 的数据进行排序,

我该怎么做?

【问题讨论】:

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


【解决方案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 我们在这里不需要任何额外的列,因为表已经有了它的主键。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-22
        • 1970-01-01
        相关资源
        最近更新 更多