这个问题是我之前关于发现未使用的序列号范围而无需使用游标的问题的后续问题(在没有游标的情况下使用 SQL Server 2005 中的序列号)。我正在使用 SQL Server 2005。
我需要对这些数字做的是将这些数字分配给表中的记录。我似乎无法想出一种方法来实际将数字表与需要这些数字的记录相关联。
想到的一种可能的解决方案是使用标识将记录插入临时表中,并将数字范围的开头用作标识种子。这种方法的唯一问题是,如果数字序列中有间隙,那么我最终会得到重复的控制数字。
这就是我的表格的样子(过于简化):
数字表:
Number
-------
102314
102315
102319
102320
102324
102329
数据表:
CustomerId PaymentAmt ControlNumber
---------- ---------- -------------
1001 4502.01 NULL
1002 890.00 NULL
9830 902923.34 NULL
我需要一种方法来做到这一点,所以我最终得到:
CustomerId PaymentAmt ControlNumber
---------- ---------- -------------
1001 4502.01 102314
1002 890.00 102315
9830 902923.34 102319
这是否可能无需使用游标?我避免使用游标的原因是因为我们当前的实现使用游标,而且由于它太慢(8 分钟超过 12,000 条记录),我一直在寻找替代方案。
注意:感谢所有发布答案的人。他们都很棒,我必须选择一个看起来更容易实现和最容易维护的那个,无论是谁在我之后。非常感激。