当联合不应该添加任何行时,为什么Access返回一个较小的表联合后?

时间:2018-07-09 18:07:54

标签: sql ms-access

我正在测试用于定期在Access中更新表的过程,并且出现了我不了解的行为。

我有主表,然后有第二个表,它是主表的子集(对主表的模拟更新)。

Master-100,000行

subMaster-500行(这500行已包含在Master中)

查询:

SELECT field1, field2, field3 FROM Master
UNION
SELECT field1, field2, field3 FROM subMaster

返回<100,000行。任何一个表中的SELECT DISTINCT *都不会删除任何行。

如果此查询的行为符合预期,我希望它返回100,000行,因为subMaster中的每一行都包含在Master中,因此应排除subMaster中的每一行作为副本。结果表如何缩短,有没有办法使它按我期望的方式工作?

1 个答案:

答案 0 :(得分:2)

SELECT DISTINCT *SELECT DISTINCT field1, field2, field3不同。

UNION删除表内和表间的重复项。这三列显然是在Master中重复的。