我在不同的数据库中有两个表。我正在尝试找出记录数量的差异。到目前为止我已经尝试过:
select COUNT(*)
from tabel1 a1
where not exists
(
select *
from db2.table1 a2
where a1.id = a2.id
);
返回31298
。但如果我自己对表进行计数,我会得到以下结果:
SELECT COUNT(*) FROM Table1 -- 227429
SELECT COUNT(*) FROM db2.Table1 -- 256406
相差 28977
条记录。谁能看到我正在做的事情会导致计数差异?
更新
我知道我可以通过减去计数来确定差异。我想知道是否可以使用 notists
获得准确的差异。这是更复杂查询的简化版本。
最佳答案
表 2 中的某些记录在表 1 中没有任何对应的条目。
您的内部查询仅选择 table2 中也对应于 table1 的值。
如果 table1 有 ID
1
3
5
表 2 有 ID
1
3
7
您会看到计数为 1 (id 5),因为第 1 行和第 3 行匹配,但第 7 行不匹配任何内容。
关于mysql - 计数显示不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989149/