UNION 演算子は、2 つ以上の SELECT ステートメントの結果セットを結合するために使用されます。
UNION 内の SELECT ステートメントには同じ数の列が必要であることに注意してください。 列にも同様のデータ型が必要です。 また、各 SELECT ステートメント内の列の順序は同じである必要があります。
SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2
注: デフォルトでは、UNION 演算子は異なる値を選択します。 重複した値が許可される場合は、UNION ALL を使用します。
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
さらに、UNION 結果セット内の列名は常に UNION 内の最初の SELECT ステートメントの列名と等しくなります。
| E_ID | E_Name |
|---|---|
| 01 | Zhang, Hua |
| 02 | Wang, Wei |
| 03 | Carter, Thomas |
| 04 | Yang, Ming |
| E_ID | E_Name |
|---|---|
| 01 | Adams, John |
| 02 | Bush, George |
| 03 | Carter, Thomas |
| 04 | Gates, Bill |
中国と米国のさまざまな従業員の名前をすべてリストします:
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 コマンドとほぼ同等です。
SQL Statement 1 UNION ALL SQL Statement 2
中国と米国のすべての従業員をリストします:
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 |