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