SQL UNION と UNION ALL 演算子

SQL UNION 演算子

UNION 演算子は、2つまたはそれ以上の SELECT 文の結果セットを合併するために使用されます。

UNION 内部の SELECT 文は同じ数の列を持っている必要があります。列も同じデータタイプを持っている必要があります。また、各 SELECT 文の列の順序も同じでなければなりません。

SQL UNION 文法

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

注釈:デフォルトでは、UNION演算子は異なる値を選択します。重複の値を許可する場合は、UNION ALLを使用してください。

SQL UNION ALL 文法

SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2

また、UNIONの結果セット内の列名は常に、UNION内の最初のSELECT文の列名と同じです。

以下の例では、元のテーブルを使用しています:

Employees_China:

E_ID E_Name
01 張, 华
02 王, 智
03 Carter, Thomas
04 楊, 明

Employees_USA:

E_ID E_Name
01 Adams, John
02 Bush, George
03 Carter, Thomas
04 Gates, Bill

UNION コマンドを使用

中国とアメリカのすべての異なる従業員名をリストアップします:

SELECT E_Name FROM Employees_China
UNION
SELECT E_Name FROM Employees_USA

結果

E_Name
張, 华
王, 智
Carter, Thomas
楊, 明
Adams, John
Bush, George
Gates, Bill

注釈:このコマンドは中国とアメリカのすべての従業員をリストアップすることができません。上の例では、同じ名前の従業員が2人いますが、そのうち1人だけがリストアップされました。UNION コマンドは異なる値のみを選択します。

UNION ALL

UNION ALL コマンドと UNION コマンドはほぼ同等ですが、UNION ALL コマンドはすべての値をリストアップします。

SQL ステートメント 1
UNION ALL
SQL ステートメント 2

UNION ALL コマンドを使用

例:

中国とアメリカのすべての従業員をリストアップします:

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA

結果

E_Name
張, 华
王, 智
Carter, Thomas
楊, 明
Adams, John
Bush, George
Carter, Thomas
Gates, Bill