2016-07-09 71 views
0

我有两个表:A(525,968条记录)和B(517,831条记录)。我想要生成一个包含来自A的所有行和来自B的匹配记录的表。两个表都有列“id”和列“year”。 ID和今年的表A的组合是唯一的,但不是在表B.所以我写了下面的查询:LEFT JOIN在PostgreSQL中返回不正确的结果

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

查询应返回表'A'的所有记录。这是整个查询,还是有'WHERE'子句? –

回答

0

首先,我明白这是一个例子,但postgres可能会在表名中包含大写字母。其次,检查计算525,968条记录的确切程度可能是一个不错的主意。问题是 - 如果您使用sime类型的数据库管理/查询客户端 - 它可能会向您显示有关表的不同/技术信息(可能有postgres中的内部行计数器可能实际上与记录数不同)。

最后检查自己像做

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