计算与参考数据集匹配的记录

时间:2015-02-09 14:04:42

标签: sql ms-access count

这是与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

2 个答案:

答案 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