我有一张表:
a.si
a.p
a.pnsi
si是唯一的id,p是double,pnsi是null
我想使用带有变量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。选择的si值(y.si)为a.pnsi大于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时,循环停止。有任何想法吗?
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