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

MySQLで既存のテーブルから特定の行を選択して新しいテーブルを作成する方法


すでに作成済みのテーブルを元に新しいテーブルを作成するには、CREATE TABLE AS SELECT文(CTAS)を使用します。この構文では、SELECT句とWHERE句を組み合わせることで、条件に一致するレコードだけを格納したテーブルを簡単に複製できます。ここでは、実際のコード例をもとに手順を詳しく解説します。

手順1:元となるテーブルを作成する

まずはサンプルとして、Id、FirstName、LastName、Ageの4つのカラムを持つテーブルを定義します。

mysql> create table DemoTable1318
-> (
-> Id int,
-> FirstName varchar(10),
-> LastName varchar(10),
-> Age int
-> );
Query OK, 0 rows affected (0.50 sec)

手順2:レコードを挿入する

続いて、INSERTコマンドを使ってテーブルにデータを登録していきます。

mysql> insert into DemoTable1318 values(1,'Chris','Brown',21);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1318 values(2,'David','Miller',24);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1318 values(3,'Carol','Taylor',23);
Query OK, 1 row affected (0.11 sec)

手順3:登録したレコードを確認する

SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。

mysql> select * from DemoTable1318;

出力結果

+------+-----------+----------+------+
| Id   | FirstName | LastName | Age  |
+------+-----------+----------+------+
|    1 | Chris     | Brown    |   21 |
|    2 | David     | Miller   |   24 |
|    3 | Carol     | Taylor   |   23 |
+------+-----------+----------+------+
3 rows in set (0.00 sec)

特定の行だけを選択して新しいテーブルを作成するクエリ

それでは本題です。既存のテーブルから年齢が21歳または23歳のレコードのみを抜き出し、新しいテーブルを作成するクエリが以下になります。ポイントは、WHERE句でIN演算子を使って対象の値を指定しているところです。

mysql> create table DemoTable1319
-> as select *from DemoTable1318
-> where Age IN(21,23);
Query OK, 2 rows affected (0.81 sec)
Records: 2 Duplicates: 0 Warnings: 0

実行結果の「Records: 2」から、2件のレコードが新しいテーブルへコピーされたことがわかります。それでは、作成されたテーブルの中身を確認してみましょう。

mysql> select * from DemoTable1319;

出力結果

+------+-----------+----------+------+
| Id   | FirstName | LastName | Age  |
+------+-----------+----------+------+
|    1 | Chris     | Brown    |   21 |
|    3 | Carol     | Taylor   |   23 |
+------+-----------+----------+------+
2 rows in set (0.00 sec)

まとめ

このように、CREATE TABLE AS SELECT文とWHERE句を組み合わせれば、既存テーブルから必要な行だけを抽出した新しいテーブルを簡単に作成できます。IN演算子のほかにも、比較演算子(=、>、<など)やLIKE句を使えば、さまざまな条件でのテーブル複製が可能です。バックアップやデータ加工の際に非常に便利なテクニックなので、ぜひ活用してください。


  1. MySQLで1つのテーブルから別のテーブルに行をコピーする方法【INSERT INTO SELECT文の使い方】

    MySQLでテーブル間の行コピーを実現する方法MySQLであるテーブルから別のテーブルへ行(レコード)をコピーしたい場合は、INSERT INTO SELECT文を使用します。この文を使えば、SELECT句で取得したデータをそのまま別のテーブルに挿入できるため、WHERE句による条件指定と組み合わせれば、必要な行だけを効率よくコピーすることも可能です。ここでは、実際にサンプルテーブルを作成し、行をコピーする手順を順番に解説します。手順1:コピー元のテーブルを作成するまず、コピー元となるテーブル「DemoTable1879」を作成します。mysql> create table DemoTa

  2. MySQLでテーブルから特定の行を抽出するクエリの書き方

    MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),