这是与MS Access相关的问题。
如何计算定义字段的记录数与另一个表的已定义字段的记录数相同?
我正在尝试以下但是因为我在F1中多次使用相同的值,语句会使count()倍数并最终得到一个太大的数字。
SELECT Count([F1]) AS F1Count
FROM tblA, Y_tblReferenceData
WHERE ((([tblA].[F1])=[Y_tblReferenceData].[F1Ref]));
我确实有重复记录,我必须计算它们。 DISTINCT不是一种选择。
这个想法是执行以下相同的操作。显然,出于性能原因,我想使用SQL而不是循环遍历Recordset。
(表中有28000多条记录,6.7亿次迭代)
dblA = 0
rs.MoveFirst
rs2.MoveFirst
Do Until rs2.EOF
If rs2.Fields(0) <> "" Then
Do Until rs.EOF
If rs.Fields(0).Value = rs2.Fields(0).Value Then
dblA = dblA + 1
rs.MoveFirst
GoTo NextRecord
End If
rs.MoveNext
Loop
End If
NextRecord:
j = j + 1
rs2.MoveNext
rs.MoveFirst
Loop
答案 0 :(得分:1)
你获得高数字的原因是因为你选择了两个表而没有任何关系。尝试加入
SELECT
Count([F1]) AS F1Count
FROM
tblA
INNER JOIN
Y_tblReferenceData
ON
[tblA].[F1] = [Y_tblReferenceData].[F1Ref];
答案 1 :(得分:0)
SELECT Count(*) AS F1Count FROM
(
SELECT DISTINCT [F1] AS F1Count
FROM tblA, Y_tblReferenceData
WHERE [tblA].[F1]=[Y_tblReferenceData].[F1Ref]
) AS inner