MySQL,UNION:複数のテーブルからデータを取得し結合する

スポンサーリンク

鍛錬 984

MySQL,UNION:複数のテーブルからデータを取得し結合する

UNION を使用すると、複数のテーブルからデータを取得し、結合して表示することができます。

結合する際にデータが重複する場合は、1つのデータのみ表示されます。
重複しても全てのデータを表示するには、ALL を付加して使用します。

使用方法は、以下に示す通りです。
以下の例は、テーブル1とテーブル2からデータを取得し結合しています。

データが重複する場合、省いて1つのデータのみを表示する場合

SELECT * FROM テーブル1
UNION
SELECT * FROM テーブル2;

データが重複しても全てのデータを表示する場合

SELECT * FROM テーブル1
UNION ALL
SELECT * FROM テーブル2;
スポンサーリンク

実行結果

以下は、テーブル「fruits」とテーブル「vegetable」のデータを取得し、結合して表示しています。

テーブル「fruits」

id tag name price
1 F apple 250
2 F orange 300
3 F grape 500

テーブル「vegetable」

id tag name price
1 V potato 300
2 V ginger 250
3 V pumpkin 500
4 V cabbage 150
5 V eggplant 400
mysql> 
mysql> select * from fruits;
+------+------+--------+-------+
| id   | tag  | name   | price |
+------+------+--------+-------+
|    1 | F    | apple  |   250 |
|    2 | F    | orange |   300 |
|    3 | F    | grape  |   500 |
+------+------+--------+-------+
3 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> select * from vegetable;
+------+------+----------+-------+
| id   | tag  | name     | price |
+------+------+----------+-------+
|    1 | V    | potato   |   300 |
|    2 | V    | ginger   |   250 |
|    3 | V    | pumpkin  |   500 |
|    4 | V    | cabbage  |   150 |
|    5 | V    | eggplant |   400 |
+------+------+----------+-------+
5 rows in set (0.00 sec)

mysql> 
mysql> 
mysql> select * from fruits
    -> union all
    -> select * from vegetable
    -> ;
+------+------+----------+-------+
| id   | tag  | name     | price |
+------+------+----------+-------+
|    1 | F    | apple    |   250 |
|    2 | F    | orange   |   300 |
|    3 | F    | grape    |   500 |
|    1 | V    | potato   |   300 |
|    2 | V    | ginger   |   250 |
|    3 | V    | pumpkin  |   500 |
|    4 | V    | cabbage  |   150 |
|    5 | V    | eggplant |   400 |
+------+------+----------+-------+
8 rows in set (0.00 sec)

上記に示した通り、複数のテーブルからデータを取得し、結合して表示することができました。

タイトルとURLをコピーしました