SQL 速習チュートリアル

SQL UNION ALL 演算子

1. SQL UNION ALL 演算子

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

この演算子は、各 SELECT 文からのすべての行を含みます。これには重複する行も含まれます

1.1 UNION ALL の要件

UNION ALL を使用するには、以下の条件を満たす必要があります。

  • UNION ALL 内のすべての SELECT 文で、列(カラム)の数が同じであること。
  • 各列のデータ型が類似していること。
  • すべての SELECT 文において、列の順序が同じであること。

2. UNION ALL の構文

SELECT カラム名(s) FROM テーブル1
UNION ALL
SELECT カラム名(s) FROM テーブル2;

       注意: 結果セットに表示される列名は、通常、最初の SELECT 文の列名が採用されます。

3. デモ用データベース

以下は「Customers(顧客)」テーブルからの抜粋です。

CustomerID CustomerNameContactName AddressCityPostalCodeCountry
1Alfreds FutterkisteMaria AndersObere Str. 57Berlin12209Germany
2Ana Trujillo Emparedados y heladosAna TrujilloAvda. de la Constitución 2222México D.F.05021Mexico
3Antonio Moreno TaqueríaAntonio MorenoMataderos 2312México D.F.05023Mexico

こちらは「Suppliers(仕入先)」テーブルからの抜粋です。

SupplierID SupplierNameContactNameAddress City PostalCode Country
1Exotic LiquidCharlotte Cooper49 Gilbert St.LondonEC1 4SDUK
2New Orleans Cajun DelightsShelley BurkeP.O. Box 78934New Orleans70117USA
3Grandma Kelly's HomesteadRegina Murphy707 Oxford Rd.Ann Arbor48104USA

4. SQL UNION ALL の使用例

次のSQLは、「Customers」テーブルと「Suppliers」テーブルの両方から、すべての国(重複する値を含む)を返します。

実行例:

SELECT Country FROM Customers
UNION ALL
SELECT Country FROM Suppliers
ORDER BY Country;

5. WHERE 句を使用した SQL UNION ALL

ここでは WHERE 句を追加し、「Customers」と「Suppliers」の両方のテーブルから、ドイツ(Germany)の都市のみを抽出する例を示します。

実行例:

SELECT City, Country FROM Customers
WHERE Country='Germany'
UNION ALL
SELECT City, Country FROM Suppliers
WHERE Country='Germany'
ORDER BY City;