SQL Server 2005 中不带 ORDER BY 的 ROW_NUMBER()
在 SQL Server 2005 中,ROW_NUMBER() 函数可用于生成结果集中每行的唯一序列号。但是,与更高版本中的对应项不同,SQL Server 2005 中的 ROW_NUMBER() 需要显式 ORDER BY 子句。当尝试生成连续数字而不改变数据的原始顺序时,此限制提出了挑战。
解决方案:
要解决此限制,我们可以避免指定使用以下查询的显式排序语法:
INSERT INTO TargetTable (ID, FIELD) SELECT Row_Number() OVER (ORDER BY (SELECT 1)) + Coalesce( (SELECT Max(ID) FROM TargetTable WITH (TABLOCKX, HOLDLOCK)), 0 ), FieldValue FROM SourceTable WHERE {somecondition};
解释:
注意事项:
以上是如何在 SQL Server 2005 中使用 ROW_NUMBER() 而不使用 ORDER BY?的详细内容。更多信息请关注PHP中文网其他相关文章!