计数匹配参考数据集的记录
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];
这是一个与 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];