Идентичны ли данные в двух таблицах

Необходимо написать запрос, который позволит понять, идентичны ли данные в двух таблицах. Порядок хранения данных в таблицах значения не имеет. Пример данных:

CREATE TABLE T1 (A INTEGER, B INTEGER) NOLOGGING;

INSERT INTO t1 (a, b) VALUES (1, 1);
INSERT INTO t1 (a, b) VALUES (2, 2);
INSERT INTO t1 (a, b) VALUES (2, 2);
INSERT INTO t1 (a, b) VALUES (3, 3);
INSERT INTO t1 (a, b) VALUES (4, 4);

COMMIT WORK;
/

CREATE TABLE T2 (A INTEGER, B INTEGER) NOLOGGING;

INSERT INTO t2 (a, b) VALUES (1, 1);
INSERT INTO t2 (a, b) VALUES (2, 2);
INSERT INTO t2 (a, b) VALUES (3, 3);
INSERT INTO t2 (a, b) VALUES (3, 3);
INSERT INTO t2 (a, b) VALUES (4, 4);

COMMIT WORK;
/

Варианты запроса:

SELECT t1.*
  FROM t1
 WHERE NOT EXISTS (SELECT 1
          FROM t2
         WHERE t2.a = t1.a
           AND t2.b = t1.b)
UNION ALL
SELECT t2.*
  FROM t2
 WHERE NOT EXISTS (SELECT 1
          FROM t1
         WHERE t1.a = t2.a
           AND t1.b = t2.b);
/

  SELECT t1.*
    FROM t1
  MINUS
  SELECT t2.*
    FROM t2
  UNION ALL
  SELECT t2.*
    FROM t2
  MINUS
  SELECT t1.*
    FROM t1;
/

P.S.
Конфигурация СУБД — Oracle Database 11g Express Edition Release 11.2.0.2.0
IDE — PL/SQL Developer Version 11.0.6.1776

Tags: ,

Comments are closed.