Union All - Union None?只查找非重复项?

时间:2014-09-30 09:14:33

标签: sql ms-access duplicates union

我有两个数据来源。一个本地副本,一个副本上载到服务器。我想检查没有数据已损坏,因此我下载了服务器副本并将它们都粘贴在MS Access中。

两个表显示为具有1200000行,这是一个良好的开端,但是这些行中的实际数据如何。我决定联盟会解决这个问题。如果两个表都相同,则应该没有重复项,因此union也只有1200000行。

SELECT tbl1.* FROM [local table] tbl1
UNION
SELECT tbl2.* FROM [server table] tbl2;

不幸的是,这返回了1203005行,这表明在两个表中有3005行不相同。现在UNION ALL将返回所有行,而不管重复项,在这种情况下为2400000行。

是否有UNION NONE仅返回两个表中不同的条目?

亲切的问候,

2 个答案:

答案 0 :(得分:0)

SELECT [all important fields here, maybe all] FROM
    (
    SELECT ...
    UNION
    SELECT ...
    ) AS temp
GROUP BY [all important fields here, maybe all] HAVING COUNT(*) = 1

或者按照以下

进行全连接
SELECT *
FROM tbl1 AS t1
FULL JOIN tbl2 AS t2 ON t1.firstColumn = t2.firstColumn AND t2.second ...
WHERE t1.firstColumn IS NULL OR t2.firstColumn IS NULL

然后答案不会是你想要的,因为你将获得所有列,包括tbl1和tbl2

答案 1 :(得分:0)

您是否尝试过Microsoft KB文章中的任何方法? Compare Two tables and Find records without matches

它强调了使用查询设计器使查询尽可能简单。看看它。