Teradata-set-operators
Teradata-SET演算子
SET演算子は、複数のSELECTステートメントの結果を組み合わせます。 これは結合と似ていますが、結合は複数のテーブルの列を結合し、SET演算子は複数の行の行を結合します。
規則
- 各SELECTステートメントの列数は同じでなければなりません。
- 各SELECTのデータ型には互換性が必要です。
- ORDER BYは、最後のSELECTステートメントにのみ含める必要があります。
連合
UNIONステートメントは、複数のSELECTステートメントからの結果を結合するために使用されます。 重複は無視されます。
構文
以下は、UNIONステートメントの基本構文です。
例
次の従業員表と給与表を考えてください。
EmployeeNo | FirstName | LastName | JoinedDate | DepartmentNo | BirthDate |
---|---|---|---|---|---|
101 | Mike | James | 3/27/2005 | 1 | 1/5/1980 |
102 | Robert | Williams | 4/25/2007 | 2 | 3/5/1983 |
103 | Peter | Paul | 3/21/2007 | 2 | 4/1/1983 |
104 | Alex | Stuart | 2/1/2008 | 2 | 11/6/1984 |
105 | Robert | James | 1/4/2008 | 3 | 12/1/1984 |
EmployeeNo | Gross | Deduction | NetPay |
---|---|---|---|
101 | 40,000 | 4,000 | 36,000 |
102 | 80,000 | 6,000 | 74,000 |
103 | 90,000 | 7,000 | 83,000 |
104 | 75,000 | 5,000 | 70,000 |
次のUNIONクエリは、EmployeeテーブルとSalaryテーブルの両方のEmployeeNo値を結合します。
クエリが実行されると、次の出力が生成されます。
UNION ALL
UNION ALLステートメントはUNIONに似ており、重複行を含む複数のテーブルの結果を結合します。
構文
次に、UNION ALLステートメントの基本的な構文を示します。
例
以下は、UNION ALLステートメントの例です。
上記のクエリを実行すると、次の出力が生成されます。 重複も返すことがわかります。
交絡
INTERSECTコマンドは、複数のSELECTステートメントからの結果を結合するためにも使用されます。 2番目のSELECTステートメントで一致する最初のSELECTステートメントから行を返します。 つまり、両方のSELECTステートメントに存在する行を返します。
構文
INTERSECTステートメントの基本構文は次のとおりです。
例
以下は、INTERSECTステートメントの例です。 両方のテーブルに存在するEmployeeNo値を返します。
上記のクエリを実行すると、次のレコードが返されます。 EmployeeNo 105は、SALARYテーブルに存在しないため除外されます。
マイナス/例外
MINUS/EXCEPTコマンドは、複数のテーブルの行を結合し、最初のSELECTにあるが2番目のSELECTにはない行を返します。 どちらも同じ結果を返します。
構文
MINUSステートメントの基本的な構文は次のとおりです。
例
以下は、MINUSステートメントの例です。
このクエリを実行すると、次のレコードが返されます。