SQL: сравнить 2 таблицы с дубликатами - PullRequest
3 голосов
/ 28 октября 2011

Мне нужно сравнить 2 таблицы, чтобы найти дубликат, но поля допускают дубликаты.

For Example: 
Tbl1:
455
7991
7991

Tbl2: 
455
7991
7991
7991

Мне нужно написать запрос, который показывает, что в таблице 2 есть дополнительные 7991. Я попытался выполнить правильное соединение, но он все равно находит соответствие, поэтому он не работает должным образом. Если бы кто-нибудь мог указать мне правильное направление, я был бы очень признателен. Спасибо !!

Ответы [ 2 ]

2 голосов
/ 28 октября 2011
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
1 голос
/ 28 октября 2011

Если ваша база данных поддерживает 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...