2014-09-30 115 views
0

我有兩個數據源。一個本地副本,一個副本上傳到服務器。我想檢查沒有數據被損壞,所以我下載了服務器複製並卡在MS Access中。Union All - Union None?僅查找非重複項?

這兩個表顯示爲具有1200000行,這是一個好的開始,但是那些行中的實際數據如何。我決定一個工會會解決問題。如果兩個表都是相同的,那麼應該沒有重複,因此聯合也只有1200000行。

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

不幸的是,這返回1203005行,這表明有3005行在兩個表中都不相同。現在,UNION ALL將返回所有行,而不管是否重複,在本例中爲2400000行。

是否有UNION NONE這將只返回兩個表中不同的條目?

親切的問候,

+0

你有行的唯一鍵嗎? – Arion 2014-09-30 09:19:25

回答

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 

還是做了充分的JOIN像下面

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

+0

訪問不支持全加入! – PaulFrancis 2014-09-30 09:47:09

+0

沒有意識到,但是你可以模擬一個「完整的外部連接」與你結合在一起的三個查詢。 http://www.databasejournal.com/features/msaccess/article.php/3516561/Implementing-the-Equivalent-of-a-FULL-OUTER-JOIN-in-Microsoft-Access.htm – Sasse 2014-09-30 09:56:16

+0

當然,你可以「模擬「FULL Outer join @Sasse。然而,考慮到數據集,我會想象這將是對子查詢低效的過程。這是我答案中文章的亮點。 – PaulFrancis 2014-09-30 09:59:43