我有一张桌子:
a.si
a.p
a.pnsi
si是唯一ID,p是双精度,pnsi为空
我想使用带有变量n的子查询在pnsi上运行更新查询:
(SELECT si FROM a as y WHERE y.si = a.si + n AND y.p > a.p)
我希望能够将n的值从1递增到100,000,仅在pnsi仍然为空的其余记录上运行此查询。
查询具有两个条件: 1.选择(y.si)作为a.pnsi的si值大于a.si 2. y.p大于a.p
这样做的目的是为了减少处理时间,因为此过程将在超过一百万条记录的表上运行,并且在大多数情况下,可以找到一个非常小的n值的正确解决方案。通过以这种方式运行,Access将评估n = 1、2 ...(升序),从而导致很少的记录,其中n会一直增加到100,000。
我需要的是一个脚本,用于递增n的值,以对其余空记录重复n次更新查询。 脚本需要将n变量的当前值发送到Update查询(y.si = a.si + n)。当没有更多记录要更新或当n达到100,000。有什么想法吗?
答案 0 :(得分:1)
VBA过程可能具有以下代码:
Dim rs As DAO.Recordset, lngCnt As Long
Set rs = CurrentDb.OpenRecordset("SELECT * FROM a WHERE pnsi Is Null;")
For lngCnt = 1 to 100000
If Not rs.EOF Then
rs.Edit
rs!pnsi = lngCnt
rs.Update
rs.MoveNext
Else
Exit For
End If
Next