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

Count records matching reference data set

这是一个与 MS Access 相关的问题。

如何计算一个定义字段与另一个定义字段具有相同值的记录数table?

我正在尝试下面的操作,但因为我在 F1 中保存了好几次相同的值,所以该语句乘以 count(),我最终得到的数字太大了。

SELECT Count([F1]) AS F1Count
FROM tblA, Y_tblReferenceData
WHERE ((([tblA].[F1])=[Y_tblReferenceData].[F1Ref]));

我确实有重复的记录,我必须数一数。 DISTINCT 不是一个选项。

这个想法是执行下面的等效操作。显然,出于性能原因,我想使用 SQL 而不是循环记录集。

(table 中的 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
SELECT Count(*) AS F1Count FROM
(    
    SELECT DISTINCT [F1] AS F1Count
    FROM tblA, Y_tblReferenceData
    WHERE [tblA].[F1]=[Y_tblReferenceData].[F1Ref]
) AS inner

你得到高数字的真正原因是你从两个表中选择,没有任何关系。尝试加入

SELECT 
    Count([F1]) AS F1Count
FROM 
    tblA 
    INNER JOIN 
    Y_tblReferenceData
    ON 
    [tblA].[F1] = [Y_tblReferenceData].[F1Ref];