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句を使えば、さまざまな条件でのテーブル複製が可能です。バックアップやデータ加工の際に非常に便利なテクニックなので、ぜひ活用してください。
-
MySQLで1つのテーブルから別のテーブルに行をコピーする方法【INSERT INTO SELECT文の使い方】
MySQLでテーブル間の行コピーを実現する方法MySQLであるテーブルから別のテーブルへ行(レコード)をコピーしたい場合は、INSERT INTO SELECT文を使用します。この文を使えば、SELECT句で取得したデータをそのまま別のテーブルに挿入できるため、WHERE句による条件指定と組み合わせれば、必要な行だけを効率よくコピーすることも可能です。ここでは、実際にサンプルテーブルを作成し、行をコピーする手順を順番に解説します。手順1:コピー元のテーブルを作成するまず、コピー元となるテーブル「DemoTable1879」を作成します。mysql> create table DemoTa
-
MySQLでテーブルから特定の行を抽出するクエリの書き方
MySQLでは、WHERE句とORDER BY、LIMITを組み合わせることで、テーブルから条件に合致する特定の行だけを効率的に取得できます。本記事では、実際にサンプルテーブルを作成し、特定の行を抽出するクエリの実行手順をわかりやすく解説します。 1. サンプルテーブルの作成 まず、CREATE TABLE文を使ってサンプル用のテーブルを作成します。ここでは「Section(組)」と「StudentName(生徒名)」という2つのカラムを持つテーブルを用意しました。 mysql> create table DemoTable1972 ( Section char(1),