sql-server - 在 SELECT INTO 中保留 ORDER BY

标签 sql-server tsql sql-order-by select-into

我有一个 T-SQL 查询,它从一个表中获取数据并将其复制到一个新表中,但只复制满足特定条件的行:

SELECT VibeFGEvents.* 
INTO VibeFGEventsAfterStudyStart 
FROM VibeFGEvents
LEFT OUTER JOIN VibeFGEventsStudyStart
ON 
    CHARINDEX(REPLACE(REPLACE(REPLACE(logName, 'MyVibe ', ''), ' new laptop', ''), ' old laptop', ''), excelFilename) > 0
    AND VibeFGEventsStudyStart.MIN_TitleInstID <= VibeFGEvents.TitleInstID
    AND VibeFGEventsStudyStart.MIN_WinInstId <= VibeFGEvents.WndInstID
WHERE VibeFGEventsStudyStart.excelFilename IS NOT NULL
ORDER BY VibeFGEvents.id

使用表的代码依赖于它的顺序,上面的副本没有保留我期望的顺序。 IE。新表 VibeFGEventsAfterStudyStart 中的行在从 VibeFGEvents.id 复制的 VibeFGEventsAfterStudyStart.id 列中并非单调递增。

在 T-SQL 中,如何保留 VibeFGEventsStudyStartVibeFGEvents 的行顺序?

最佳答案

我知道这有点旧了,但我需要做类似的事情。我想将一个表的内容插入到另一个表中,但顺序是随机的。我发现可以通过使用 select top norder by newid() 来做到这一点。如果没有“top n”,则不会保留顺序,第二个表的行顺序与第一个表的顺序相同。然而,对于“top n”,顺序(在我的例子中是随机的)被保留。我使用的“n”值大于行数。所以我的查询是这样的:

insert Table2 (T2Col1, T2Col2)
  select top 10000 T1Col1, T1Col2
  from Table1
  order by newid()

关于sql-server - 在 SELECT INTO 中保留 ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14424929/

相关文章:

sql - exec(@sql) 的返回值

TSQL 在 tsql 中声明一个变量而不显式定义列

C# SMO 和 SqlEnum 引用错误

sql - 如何在不使用循环的情况下将拆分后的金额插入表中?

sql-server - 报表系统测试计划

tsql - 从日期时间中获取时间并将其转换为秒?

MySQL 按子选择结果排序

php - 在 codeigniter 上的 foreach 中的条件(排序依据)

sql-server - SQL 如何使用 order by 0?

sql-server - SQL Server 面试题