mysql - 为什么这两个结果集没有相加?

标签 mysql left-join distinct

我有一个包含 144,194 行的“主”表 (cited_pa​​pers),以及一个包含 7,977 行样本的“样本”表 (publication)。我试图获取主表中而不是示例表中的行(通过其唯一的 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 来计算主表和示例表中的行数,因此我确信这两个表中都没有重复项。

最佳答案

独特的东西可能会让人失望。运行以下查询来验证您的号码。

验证“主”行的数量: 从 alex_WOS.cited_pa​​pers 中选择计数(*)

验证“样本”行数: 从 alex_WOS.publication 中选择计数(*)

验证不在“样本”表中的“主”行数: SELECT count(*) FROM alex_WOS.cited_pa​​pers c LEFT JOIN alex_WOS.publication p USING(id) WHERE p.id IS NULL

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

关于mysql - 为什么这两个结果集没有相加?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29309132/

相关文章:

sql - 如何在 postgresql 中的 2 列上选择不同的值

Mysql sum distinct 基于包含多个LEFT JOIN的其他列

php - 计算行数并与给定数字进行比较

mysql - 这个简单的左连接操作不起作用,但为什么呢?

sql - MySQL MyISAM 更新语句是否锁定表并阻止读取?

mysql - 在 MySQL 中具有多个连接的一行结果

mysql - 根据另一个表的 id 对一个基于结果的组中两个不同表的两列求和

mysql - 如何在 SQL 中选择具有 MAX(列值)、DISTINCT by MULTIPLE 列的行

Mysql子查询外部Where

php - 从结果中删除重复项