UNIONとは
SQLのUNION演算子は、2つのSELECTクエリの結果を結合するために使用されるものです。UNIONを使用することで、2つの結果セットを1つの結果セットに結合し、重複を削除します。
UNIONの使い方
UNIONの使い方は以下のようになります:
SELECT column1, column2 FROM table1
UNION
SELECT column1, column2 FROM table2;
この例では、table1とtable2の2つのテーブルからデータを取得しています。それぞれのSELECTクエリは2つの列を選択していますが、必要に応じて複数の列を選択することができます。ただし、UNION演算子を使用する場合、選択される列数とデータ型は一致している必要があります。
UNION ALLの使い方
また、UNION ALL演算子もあります。UNION ALLを使用する場合、重複を削除せずに2つの結果セットを結合します。
SELECT column1, column2 FROM table1
UNION ALL
SELECT column1, column2 FROM table2;
UNION ALLは、重複を考慮しない場合やパフォーマンスが重要な場合に使用されます。
2つテーブルの列名が違う時
SELECTの列名が異なる場合、UNION演算子を使用することはできますが、列名は最初のSELECT文の列名が適用されます。すなわち、結果セットの列名は最初のSELECT文の列名に基づいて命名されます。
例を示します:
テーブルA(column1, column2):
+----------+----------+
| column1 | column2 |
+----------+----------+
| 1 | A |
| 2 | B |
+----------+----------+
テーブルB(column3, column4):
+----------+----------+
| column3 | column4 |
+----------+----------+
| X | Y |
| Z | W |
+----------+----------+
列名が異なる場合のUNIONの例:
SELECT column1, column2 FROM tableA
UNION
SELECT column3, column4 FROM tableB;
結果セット:
+----------+----------+
| column1 | column2 |
+----------+----------+
| 1 | A |
| 2 | B |
| X | Y |
| Z | W |
+----------+----------+
最初のSELECT文がテーブルAの列名を持っているため、結果セットの列名が「column1」と「column2」となります。テーブルBの列名は無視されます。
もし、結果セットの列名を変更したい場合は、エイリアスを使用して列名を指定することができます。以下は、エイリアスを使用した例です:
SELECT column1, column2 FROM tableA
UNION
SELECT column3 AS column1, column4 AS column2 FROM tableB;
このクエリでは、テーブルBの列にエイリアスを付けてテーブルAの列名と合わせています。結果セットは次のようになります:
+----------+----------+
| column1 | column2 |
+----------+----------+
| 1 | A |
| 2 | B |
| X | Y |
| Z | W |
+----------+----------+
このように、エイリアスを使うことで、異なる列名を持つテーブルをUNIONする際に、結果セットの列名を自由に変更できます。