2011-10-28 171 views
3

我需要比較2個表來找到重複,但這些字段允許重複。SQL:比較兩個表與重複

For Example: 
Tbl1: 
455 
7991 
7991 

Tbl2: 
455 
7991 
7991 
7991 

我需要編寫一個查詢,顯示有一個額外的7991在表2中我嘗試了右連接,但它仍然找到了比賽,因此不能正常工作。如果有人能指出我正確的方向,我將不勝感激。謝謝!!

+0

什麼RDBMS是這個呢? –

+0

這是您在表中唯一的價值,7991的其他值是不同的? – GregM

+0

這是用於Microsoft Access的。我嘗試了下面的代碼,但他們沒有解決。我不知道我理解你的問題格雷格? – user1018766

回答

2
SELECT t1.colname 
FROM (SELECT colname 
        , COUNT(colname) AS colCount 
      FROM  tbl1 
      GROUP BY colname 
     ) t1 
     INNER JOIN (SELECT colname 
         , COUNT(colname) AS colCount 
       FROM  tbl2 
       GROUP BY colname 
      ) t2 ON t1.colname = t2.colname 
        AND t1.colCount <> t2.colCount 
+0

+1這看起來像我喜歡MS Access的正確方法。我編輯了SQL,因爲我不認爲Access的數據庫引擎接受JOIN作爲INNER JOIN的同義詞。如果你想要別的東西,請更改它。如果它不能像寫入那樣工作,我會將't1.colCount <> t2.colCount'移動到WHERE子句。 – HansUp

+0

完美工作,謝謝! – user1018766

1

如果你的數據庫支持FULL OUTER JOIN(不是MySQL的)這會給你所有的兩個表之間的差異:

SELECT 
    T1.x, 
    COALESCE(T1.cnt, 0) AS T1_count, 
    COALESCE(T2.cnt, 0) AS T2_count 
FROM 
(
    SELECT x, COUNT(*) AS cnt 
    FROM Tbl1 
    GROUP BY x 
) T1 
FULL OUTER JOIN 
(
    SELECT x, COUNT(*) AS cnt 
    FROM Tbl2 
    GROUP BY x 
) T2 
ON T1.x = T2.x 
WHERE T1.cnt <> T2.cnt 
+0

感謝您的快速響應!我現在就開始吧。 – user1018766