LEFT JOIN在PostgreSQL中返回错误的结果

时间:2016-07-09 03:51:24

标签: postgresql left-join

我有两张桌子:A(525,968条记录)和B条(517,831条记录)。我想生成一个表,其中包含A中的所有行和来自B的匹配记录。两个表都有列“id”和列“year”。表A中id和year的组合是唯一的,但不在表B中。所以我写了以下查询:

SELECT
 A.id,
 A.year,
 A.v1,
 B.x1,
 B.e1
FROM
A
LEFT JOIN B ON (A.id = B.id AND A.year = B.year);

我认为结果应该包含A中相同的记录总数,但它只返回大约517,950条记录。我想知道可能的原因是什么。

谢谢!

1 个答案:

答案 0 :(得分:0)

首先,我知道这是一个例子,但是postgres可能会在表名中出现大写字母问题。

其次,检查525,968条记录的精确程度可能是一个好主意。问题是 - 如果您使用sime类型的数据库管理/查询客户端 - 它可能会向您显示有关表的不同/技术信息(postgres中可能存在实际上可能与记录数不同的内部行计数器)。

最后检查一下自己做的事情

SELECT 
 count("A".id)
FROM 
 "A"