Teradata - operatory SET

Operatory SET łączą wyniki z wielu instrukcji SELECT. Może to wyglądać podobnie do Łączenia, ale łączenia łączy kolumny z wielu tabel, podczas gdy operatory SET łączą wiersze z wielu wierszy.

Zasady

  • Liczba kolumn z każdej instrukcji SELECT powinna być taka sama.

  • Typy danych z każdego polecenia SELECT muszą być zgodne.

  • ORDER BY należy uwzględnić tylko w końcowej instrukcji SELECT.

UNIA

Instrukcja UNION służy do łączenia wyników z wielu instrukcji SELECT. Ignoruje duplikaty.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji UNION.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION  

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Przykład

Weź pod uwagę poniższą tabelę pracowników i tabelę wynagrodzeń.

Pracownik numer Imię Nazwisko JoinedDate DepartmentNo Data urodzenia
101 Mikrofon James 27.03.2005 1 05.01.1980
102 Robert Williams 25.04.2007 2 05.03.1983
103 Piotr Paweł 21.03.2007 2 01.04.1983
104 Alex Stuart 01.02.2008 2 06.11.1984
105 Robert James 1/4/2008 3 01.12.1984
Pracownik numer obrzydliwy Odliczenie Płaca netto
101 40 000 4000 36.000
102 80 000 6000 74 000
103 90 000 7,000 83 000
104 75 000 5000 70 000

Następujące zapytanie UNION łączy wartość EmployeeNo z tabeli Employee i Salary.

SELECT EmployeeNo 
FROM  
Employee 
UNION 

SELECT EmployeeNo 
FROM  
Salary;

Gdy zapytanie jest wykonywane, generuje następujące dane wyjściowe.

EmployeeNo 
----------- 
   101 
   102 
   103 
   104 
   105

UNIA WSZYSTKO

Instrukcja UNION ALL jest podobna do UNION, łączy wyniki z wielu tabel, w tym zduplikowanych wierszy.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji UNION ALL.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
UNION ALL 

SELECT col1, col2, col3…
FROM  
<table 2> 
[WHERE condition];

Przykład

Poniżej znajduje się przykład instrukcji UNION ALL.

SELECT EmployeeNo 
FROM  
Employee 
UNION ALL 

SELECT EmployeeNo 
FROM  
Salary;

Kiedy powyższe zapytanie jest wykonywane, generuje następujące dane wyjściowe. Możesz zobaczyć, że zwraca również duplikaty.

EmployeeNo 
----------- 
    101 
    104 
    102 
    105 
    103 
    101 
    104 
    102 
    103

KRZYŻOWAĆ

Polecenie INTERSECT służy również do łączenia wyników z wielu instrukcji SELECT. Zwraca wiersze z pierwszej instrukcji SELECT, która ma odpowiednie dopasowanie w drugiej instrukcji SELECT. Innymi słowy, zwraca wiersze, które istnieją w obu instrukcjach SELECT.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji INTERSECT.

SELECT col1, col2, col3… 
FROM  
<table 1>
[WHERE condition] 
INTERSECT 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Przykład

Poniżej znajduje się przykład instrukcji INTERSECT. Zwraca wartości EmployeeNo, które istnieją w obu tabelach.

SELECT EmployeeNo 
FROM  
Employee 
INTERSECT 

SELECT EmployeeNo 
FROM  
Salary;

Po wykonaniu powyższego zapytania zwraca następujące rekordy. Pracownik nr 105 jest wykluczony, ponieważ nie istnieje w tabeli WYNAGRODZENIE.

EmployeeNo 
----------- 
   101 
   104 
   102 
   103

MINUS / EXCEPT

Polecenia MINUS / EXCEPT łączą wiersze z wielu tabel i zwracają wiersze, które znajdują się w pierwszym SELECT, ale nie w drugim SELECT. Oba zwracają te same wyniki.

Składnia

Poniżej znajduje się podstawowa składnia instrukcji MINUS.

SELECT col1, col2, col3… 
FROM  
<table 1> 
[WHERE condition] 
MINUS 

SELECT col1, col2, col3… 
FROM  
<table 2> 
[WHERE condition];

Przykład

Poniżej znajduje się przykład instrukcji MINUS.

SELECT EmployeeNo 
FROM  
Employee 
MINUS 

SELECT EmployeeNo 
FROM  
Salary;

Po wykonaniu tego zapytania zwraca następujący rekord.

EmployeeNo 
----------- 
   105