MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

MySQLでCREATE TABLE ASステートメントを使って2つのテーブルをUNION結合する方法

MySQLのCREATE TABLE ASステートメントで2つのテーブルをUNION結合する

複数のテーブルのデータをまとめた新しいテーブルを作成したい場合、UNIONを利用することで実現できます。この記事では、CREATE TABLE ... AS SELECTステートメントとUNIONを組み合わせて、2つのテーブルの結合結果を1つの新しいテーブルに格納する手順を、実際のSQL例とともに解説します。

1つ目のテーブルを作成する

まず、以下のコマンドで1つ目のテーブル「DemoTable1」を作成します。

mysql> create table DemoTable1(FirstName varchar(1000));
Query OK, 0 rows affected (1.22 sec)

次に、INSERTコマンドでレコードを挿入します。

mysql> insert into DemoTable1 values('John');
Query OK, 1 row affected (0.20 sec)

SELECT文ですべてのレコードを確認してみましょう。

mysql> select *from DemoTable1;

実行結果は以下のとおりです。

+-----------+
| FirstName |
+-----------+
| John |
+-----------+
1 row in set (0.02 sec)

2つ目のテーブルを作成する

続いて、2つ目のテーブル「DemoTable2」を作成します。

mysql> create table DemoTable2(FirstName varchar(100));
Query OK, 0 rows affected (0.81 sec)

同様にレコードを挿入します。

mysql> insert into DemoTable2 values('Chris');
Query OK, 1 row affected (0.21 sec)

SELECT文で内容を確認します。

mysql> select *from DemoTable2;

実行結果は以下のとおりです。

+-----------+
| FirstName |
+-----------+
| Chris |
+-----------+
1 row in set (0.00 sec)

CREATE TABLE ASとUNIONで結合テーブルを作成する

それでは本題のクエリです。CREATE TABLE ASステートメントを使い、2つのテーブルをUNION結合した結果を格納する新しいテーブル「DemoTable3」を作成します。各SELECT文にTABLE_NAMEというカラムを追加して、データがどのテーブル由来なのかを識別できるようにしているのがポイントです。

mysql> create table DemoTable3 AS
(
select FirstName, 'DemoTable1' AS `TABLE_NAME` from DemoTable1)
union
(
select FirstName, 'DemoTable2' AS `TABLE_NAME` from DemoTable2);
Query OK, 2 rows affected (1.08 sec)
Records: 2 Duplicates: 0 Warnings: 0

作成したテーブルの内容を確認する

最後に、DemoTable3の全レコードを表示して確認します。

mysql> select *from DemoTable3;

実行結果は以下のとおりです。2つのテーブルのデータが1つのテーブルにまとめられていることがわかります。

+-----------+--------------+
| FirstName | TABLE_NAME |
+-----------+--------------+
| John | DemoTable1 |
| Chris | DemoTable2 |
+-----------+--------------+
2 rows in set (0.00 sec)

まとめ

CREATE TABLE ... AS SELECTUNIONを組み合わせれば、複数のテーブルの結合結果を簡単に新しいテーブルとして保存できます。なお、通常のUNIONは重複行を自動的に除去するため、重複を含めてすべての行を取得したい場合はUNION ALLを使用してください。また、出典を示すカラムを追加しておくと、あとからデータの由来を判別できて便利です。

  1. MySQLで日付(DATETIME型)を使った一時テーブルを作成する方法

    MySQLで日付を扱う一時テーブルを作成するには、CREATE TEMPORARY TABLE文を使用します。一時テーブルはセッションが終了すると自動的に削除されるため、一時的なデータの保存や計算用途に非常に便利です。基本構文DATETIME型のカラムを持つ一時テーブルは、以下の構文で作成できます。CREATE TEMPORARY TABLE テーブル名(    カラム名 DATETIME);実際に一時テーブルを作成してみようまず、「DueDate」というDATETIME型カラムを持つ一時テーブル「DemoTable」を作成します。mysql> C

  2. MySQLでインデックス付きのテーブルを作成する方法を徹底解説

    MySQLでは、テーブル作成後にCREATE INDEX文を使うことで、特定のカラムに対してインデックスを追加できます。検索速度の向上やデータ整合性の確保において、インデックスは非常に重要な役割を果たします。この記事では、基本的な構文から実際の実行例まで、順を追ってわかりやすく解説します。インデックス付きテーブルを作成する基本構文まずテーブルを作成し、その後CREATE INDEX文でインデックスを追加します。基本の構文は以下のとおりです。create table yourTableName ( yourColumnName1 dataType, yourColumnName2 dataTyp