【发布时间】:2015-05-04 09:56:20
【问题描述】:
我正在尝试遍历生成的temp table 的所有记录以更新密钥。表是分步合并的,只有表完成后才能分配索引。
问题是临时表有no index,当我想循环遍历它,所以使用语句UPDATE tablename WHERE index = value是没用的
有没有办法让我循环遍历temp table 并更新当前选定的记录。每条记录的 id 应为 incremented
例子:
IDField Field1 Field2
0 1 1
0 2 1
0 1 2
0 3 3
遍历每条记录以将其更改为:
IDField Field1 Field2
1 1 1
2 2 1
3 1 2
4 3 3
这可能without an index,如果显示我应该怎么做?
【问题讨论】:
-
循环遍历每条记录是什么意思? SQL Server 最适用于基于集合的数据处理。还可以分享您编写的代码,它可以让用户更好地了解您想要实现的目标。
-
@M.Ali 代码/表不是问题。但我会为这个想法添加一个演示表
-
现在你如何定义哪一行被分配了什么数字?你是如何开始填充这个 Temp 表的?
-
我可以想到两种可能的解决方案,1)如果表是使用
Create Table语句创建的,则在创建表时使用标识字段填充此列。 2) 如果您使用SELECT * INTO #Temp FROM Table即时创建此表,则在您的选择语句中使用ROW_NUMBER()为该列赋予增量值。 -
@M.Ali 谢谢!使用 ROW_NUMBER 解决了这个问题:)
标签: sql-server stored-procedures foreach temp-tables