我正在测试用于定期在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
中的每一行作为副本。结果表如何缩短,有没有办法使它按我期望的方式工作?
答案 0 :(得分:2)
SELECT DISTINCT *
与SELECT DISTINCT field1, field2, field3
不同。
UNION
删除表内和表间的重复项。这三列显然是在Master
中重复的。