查找计数差异 - Microsoft Access 和 SQL

Posted

技术标签:

【中文标题】查找计数差异 - Microsoft Access 和 SQL【英文标题】:Finding a difference in counts - Microsoft Access & SQL 【发布时间】:2017-01-11 14:42:00 【问题描述】:

所以我有两张表,每张都有几千条记录。只有两个字段 - ID 和 ID 计数。

这些表应该有大约 30 个具有不同计数的 ID。我试图通过运行查询来找出计数上的不匹配项来定位它们。

ID|Count
A | 5
B | 12
C | 9

A | 5
B | 13
C | 9

在上述情况下,我只想提取记录 B,因此我可以将其标记为不匹配。我不确定一个简单的方法来做到这一点。我已经尝试过外部联接(Union All in Access),两个字段的左右联接。没有任何效果。

【问题讨论】:

您使用的是 mysql 还是 MS Access? (不要标记未涉及的产品。) @jarlh 对不起!我删除了标签。我正在使用 MS Access。 【参考方案1】:

如果我理解这个问题应该很简单(您的表已经聚合并且两者中的 ID 都是 PK)。只需要一个 WHERE 子句即可返回与每个 ID 不匹配的计数。

SELECT b.ID, b.[CountOfID]
FROM Table1 a
INNER JOIN Table2 b
ON a.ID = b.ID
WHERE a.[CountOfID] <> b.[CountOfID]

这假定第一个表中的任何现有 ID 也存在于第二个表中。

【讨论】:

【参考方案2】:

您可以使用 group by 来获取具有不同计数的 id(我将 count 列称为 count_col 因为 count 是保留关键字)。

select id
from your_table
group by id
having count(distinct count_col) > 1;

如果要查找所有具有这些 id 的行,可以使用IN

select *
from your_table
where id in (
    select id
    from your_table
    group by id
    having count(distinct count_col) > 1
);

【讨论】:

以上是关于查找计数差异 - Microsoft Access 和 SQL的主要内容,如果未能解决你的问题,请参考以下文章

Microsoft Access ODBC 连接:连接字符串差异

Microsoft Access SQL 查询计数不同

Microsoft Access 交叉表查询中显示的多个客户 ID 的计数

Sql查询在同一查询中查找具有差异条件的计数和总计数

在使用SQL Server后端的Microsoft Access中使用查找对话框时性能下降

如何使用 SQL 在 Microsoft Access 2013 中创建查找字段?