【发布时间】:2013-01-03 16:45:46
【问题描述】:
我有一个 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 中,我如何在 VibeFGEventsStudyStart 中保留来自 VibeFGEvents 的行的顺序?
【问题讨论】:
-
为简单起见,你不能用更短的名字,这样会更清楚吗?
-
@RoyiNamir 短名称 = 意义不大,所以会更清楚。
-
@TonyHopkinson 寻找
VibeFGEventsStudyStart.MIN_TitleInstID并寻找所有其他人是否同名,这很痛苦。 -
跟Sql server有什么关系?我说的是提问。我们不在乎他的真实姓名。我们关心他的问题。这就是他在这里的原因。问一个问题。(更清楚 = 对我们来说,SO 用户)
-
由于关系数据库本身确实没有任何 order 的概念 - 在插入时 preserving 顺序有什么意义?一般来说,任何关系表默认无序; 如果您在
SELECT中明确定义ORDER BY子句,则可以订购结果集
标签: sql-server tsql sql-order-by select-into