Архив рубрики «Oracle»

Сравнение двух таблиц с помощью SQL запроса

Перед вами поставлена не сложная на первый взгляд задача сравнить содержимое двух таблиц с помощью запросов SQL.
Решить ее можно двумя способами:

Способ номер 1:

Необходимо выполнить следующие два запроса:

SELECT * FROM tbl1
MINUS
SELECT * FROM tbl2;

SELECT * FROM tbl2
MINUS
SELECT * FROM tbl1;

Способ номер 2:

Способ номер 1 почти всегда будет работать только
в том случае, когда tbl1 и tbl2 включают одинаковое число строк. Но в tbl1 некоторые строки могут встречаться n раз, а в tbl2 – m раз. Чтобы разрешить эту ситуацию необходимо запустить такие два запроса:

SELECT tbl1.*,count(*)
FROM tbl1
GROUP BY clmn1,clmn2,...
MINUS
SELECT tbl2.*,count(*)
FROM tbl2
GROUP BY clmn1,clmn2,...

И

SELECT tbl2.*,count(*)
FROM tbl2
GROUP BY clmn1,clmn2,...
MINUS
SELECT tbl1.*,count(*)
FROM tbl1
GROUP BY clmn1,clmn2,...