SQL UNION 演算子

❮ 前章へ 次章へ ❯

SQL UNION 演算子は、SELECT 文の 2 つ以上の結果を結合します。


SQL UNION 演算子

UNION 演算子は、2つ以上の SELECT 文の結果セットを結合します。

UNION 内の各 SELECT 文の列の数は、同じでなければならないことに注意してください。 列は、同じデータ型を持っている必要もあります。 また、各 SELECT 文の列の順序も、同じでなければなりません。

SQL UNION 構文

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

注: UNION 演算子は、デフォルトで、重複しない値だけを選択します。 重複する値を許容するには、UNION に ALL キーワードを使用します。

SQL UNION ALL 構文

SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

追記: UNION の結果セットの列名は、通常 UNION における最初の SELECT 文の列名になります。


デモ・データベース

このチュートリアルでは、よく知られた Northwind サンプルデータベースを使用します。

下は、"Customers" テーブルから抜粋したものです:

CustomerID CustomerName ContactName Address City PostalCode Country
1

Alfreds Futterkiste Maria Anders Obere Str. 57 Berlin 12209 Germany
2 Ana Trujillo Emparedados y helados Ana Trujillo Avda. de la Constitución 2222 México D.F. 05021 Mexico
3 Antonio Moreno Taquería Antonio Moreno Mataderos 2312 México D.F. 05023 Mexico

および "Suppliers" テーブルからの抜粋です:

SupplierID SupplierName ContactName Address City PostalCode Country
1 Exotic Liquid Charlotte Cooper 49 Gilbert St. London EC1 4SD UK
2 New Orleans Cajun Delights Shelley Burke P.O. Box 78934 New Orleans 70117 USA
3 Grandma Kelly's Homestead Regina Murphy 707 Oxford Rd. Ann Arbor 48104 USA

SQL UNION の例

次の SQL 文は、"Customers" と "Suppliers" テーブルから異なる全ての cities (重複しない値だけ)を選択します:

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
Try it Yourself ❯

注: UNION は、2 つのテーブルから全ての city をリストすることには使用できません。 何人かの customer と supplier が同じ city に住んでいる場合、各 city は 1 度しかリストされません。 UNION は、重複しないだけを選択します。UNION ALL を使用することで、重複した値も選択できるようになります。


SQL UNION ALL の例

次の SQL 文は、UNION ALL を使用して、"Customers" と "Suppliers" テーブルから 全ての(重複する値も含め)city を選択します:

SELECT City FROM Customers
UNION ALL
SELECT City FROM Suppliers
ORDER BY City;
Try it Yourself ❯

WHERE 付の SQL UNION ALL

次の SQL 文は、UNION ALL を使用して、"Customers" と "Suppliers" テーブルから 全ての(重複する値も含め)German city を選択します:

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

❮ 前章へ 次章へ ❯