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 Zhang, Hua
02 Wang, Wei
03 Carter, Thomas
04 Yang, Ming

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
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Gates, Bill

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

UNION ALL

UNION ALL コマンドは、すべての値をリストする点を除いて、UNION コマンドとほぼ同等です。

SQL Statement 1
UNION ALL
SQL Statement 2

UNION ALL コマンドの使用

例:

中国と米国のすべての従業員をリストします:

SELECT E_Name FROM Employees_China
UNION ALL
SELECT E_Name FROM Employees_USA

結果

E_Name
Zhang, Hua
Wang, Wei
Carter, Thomas
Yang, Ming
Adams, John
Bush, George
Carter, Thomas
Gates, Bill