我有一个设计不良的表,其中包含4个布尔字段,而这4个字段中只有一个需要为真。 ATM我只是试图生成用于测试的随机数据,但是我无法找到一种方法来将10000行的四个字段之一随机设置为true。 是否有任何纯SQL方式可以执行此操作,还是应该使用一些VBA代码来执行此操作? 我必须使用的数据库是Microsoft Access。
感谢您的帮助!
编辑-基于Hmax的答案
verify(...)
答案 0 :(得分:0)
您可以在UPDATE SQL中使用VBA函数,如下所示:
Public Function Random1of4(varID As Variant, intIndex As Integer) As Boolean
Static curID As Variant
Static intVal As Integer
If curID <> varID Then
'new id, generate new random number from 1 to 4
intVal = Int(Rnd * 4 + 1)
curID = varID
End If
Random1of4 = intIndex = intVal
End Function
此函数使用静态变量,这些变量在函数调用之间保留值。它在内部生成1到4之间的新随机数(intVal),如果intIndex参数等于intVal,则返回True。如果参数varID更改,则生成新的intVal。
在标准模块中创建此函数,然后使用此函数创建并运行UPDATE语句-将表中的任何值传递给varID,该值对于每一行都是不同的(通常是主键),并为每个布尔字段将intIndex的值从1改为4 :
UPDATE Data
SET TimeOut = Random1of4([ID], 1)
,Interaction = Random1of4([ID], 2)
,Responses = Random1of4([ID], 3)
,Manual = Random1of4([ID], 4);