English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
このチュートリアルでは、MySQL UNION 操作子の文法と例を紹介します。
MySQL UNION 操作子は、2つ以上の SELECT 文の結果を結合して1つの結果セットにまとめるために使用されます。複数の SELECT 文は重複データを削除します。
MySQL UNION 操作子の文法形式:
SELECT expression1, expression2, ... expression_n FROM tables [WHERE 条件] UNION [ALL | DISTINCT] SELECT expression1, expression2, ... expression_n FROM tables [WHERE conditions];
expression1, expression2, ... expression_n: 検索する列。
tables: 検索するデータテーブル。
WHERE conditions: オプションで、検索条件。
DISTINCT: オプションで、結果セットから重複データを削除します。デフォルトでは UNION 操作子は重複データを削除するため、DISTINCT修飾子は結果に影響を与えません。
ALL: オプションで、すべての結果セットを返し、重複データを含む。
このチュートリアルでは、w3codebox サンプルデータベース。
以下は「Websites」テーブルから選ばれたデータです:
mysql> SELECT * FROM Websites; +----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 基礎教程網 | http://ja.oldtoolbag.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
以下は「apps」APPのデータです:
mysql> SELECT * FROM apps; +----+------------+-------------------------+---------+ | id | app_name | url | country | +----+------------+-------------------------+---------+ | 1 | QQ APP | http://im.qq.com/ | CN | | 2 | 微博 APP | http://weibo.com/ | CN | | 3 | 淘宝 APP | https://www.taobao.com/ | CN | +----+------------+-------------------------+---------+ 3 rows in set (0.00 sec)
以下のSQL文は「Websites」および「apps」テーブルからすべての異なるcountry(異なる値のみ):
SELECT country FROM Websites UNION SELECT country FROM apps ORDER BY country;
以下のSQLを実行すると、結果が以下のようになります:
注記:UNIONは、2つのテーブルのすべてのcountryをリストアップすることには使用できません。同じ国に属する一部のウェブサイトやAPPがある場合、各国は1回だけリストアップされます。UNIONは異なる値のみを選択します。重複の値を選択する場合はUNION ALLを使用してください!
以下のSQL文は、UNION ALLを使用して"Websites"と"apps"テーブルから選択していますすべてのcountry(重複の値も含まれます):
SELECT country FROM Websites UNION ALL SELECT country FROM apps ORDER BY country;
以下のSQLを実行すると、結果が以下のようになります:
以下のSQL文は、UNION ALLを使用して"Websites"と"apps"テーブルから選択していますすべての中国(CN)のデータ(重複の値も含まれます):
SELECT country, name FROM Websites WHERE country='CN' UNION ALL SELECT country, app_name FROM apps WHERE country='CN' ORDER BY country;
以下のSQLを実行すると、結果が以下のようになります: