编写脚本以使用递增变量重复更新查询

问题描述 投票:0回答:1

我有一张表:

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时,循环停止。有任何想法吗?

sql ms-access access-vba
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.