SQL Server 2005 不帶ORDER BY 的ROW_NUMBER()
在SQL Server 2005 中,可用於產生結果集中每行的唯一序號。但是,與較高版本中的對應項不同,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中文網其他相關文章!