查找计数差异 - 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 交叉表查询中显示的多个客户 ID 的计数