为什么这两个结果集没有加起来?

时间:2015-03-27 19:53:23

标签: mysql left-join distinct

我有一个"主人"表(cited_papers)144,194行,"样本" table(publication),其中包含7,977个这样的行的示例。我正在尝试获取主表中但不是样本表的行(通过其唯一的id字段):

SELECT DISTINCT c.*
FROM alex_WOS.cited_papers as c LEFT JOIN alex_WOS.publication USING (id)
WHERE alex_WOS.publication.id IS NULL

这样可行,但我得到的结果数是141,019。为什么这些计数加起来呢? (141,019 + 7977!= 144,194)我做了一个SELECT DISTINCT来计算主表和样本表中的行,所以我确信这两个表中都没有重复。

2 个答案:

答案 0 :(得分:1)

独特的可能是甩掉东西。运行以下查询以验证您的号码。

验证“主”行的数量: SELECT count(*) FROM alex_WOS.cited_papers

验证“样本”行的数量: SELECT count(*) FROM alex_WOS.publication

验证“样本”表中没有的“主”行数: SELECT count(*) FROM alex_WOS.cited_papers c LEFT JOIN alex_WOS.publication p USING(id) WHERE p.id IS NULL

这些数字应加起来......

答案 1 :(得分:0)

正如JNevill建议的那样,我的sample表毕竟不是master的子集。我是假人......