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する際に、結果セットの列名を自由に変更できます。