Dlaczego taki dziwny tytuł - dla ćwiczeń chciałem sobie napisać zapytanie wyświetlające różnicę między tabelą A i B.
Dajmy na to, że mamy tabele A z liczbami parzystymi:
SELECT LEVEL * 2 AS n
FROM DUAL
CONNECT BY LEVEL <= 100
oraz tabele B z liczbami podzielnymi przez 3:
SELECT LEVEL * 3 AS n
FROM DUAL
CONNECT BY LEVEL <= 100
Teraz spróbujemy wyciągnąć różnice między tablą A i B.
Całe zapytanie wygląda następująco:
WITH
A AS
(
SELECT LEVEL * 2 AS n
FROM DUAL
CONNECT BY LEVEL <= 100
),
B AS
(
SELECT LEVEL * 3 AS n
FROM DUAL
CONNECT BY LEVEL <= 100
)
(SELECT 'a' tab ,n FROM A
MINUS
SELECT 'a' tab ,n FROM B)
UNION ALL
(SELECT 'b' tab ,n FROM B
MINUS
SELECT 'b' tab ,n FROM A)
ORDER by n
;
Wynik takiego zapytania jest przedstawiony poniżej: