【发布时间】:2020-07-05 06:20:07
【问题描述】:
我认为这甚至不是一个 SQL 问题,我只是在逻辑上挣扎,并且可能有一个愚蠢的时刻。
我正在尝试查找表 cms 中存在但表 cm 中不存在的电子邮件地址的数量。我正在使用 postgres 10.4。两个表都包含一个 varchar 列,“email”。
这两个查询都返回 18309 的计数:
SELECT COUNT(DISTINCT email) FROM cms;
SELECT COUNT(email) FROM cms;
这两个查询都返回 17949 的计数:
SELECT COUNT(DISTINCT email) FROM cm;
SELECT COUNT(email) FROM cm;
这意味着有...
18309 - 17949 = cms 中的记录比 cm 多 360 条。
然后我用以下方式查询差异:
SELECT COUNT(cms.email) FROM cms LEFT JOIN cm ON cm.email = cms.email WHERE cm.email IS NULL;
此查询返回 369。
差异来自哪里?
- 两个表本身不包含重复记录。
- 一个表比另一个表多 360 条记录。
- 一个表中存在 369 条记录,而另一个表中不存在。
那九个记录是什么??
【问题讨论】:
-
该列中有空值吗?
-
部分记录不匹配。
标签: sql postgresql duplicates