MySQLのINSERT INTO…SELECT文であるテーブルから別のテーブルへデータをコピーする方法
MySQLでは、INSERT INTO ... SELECT文を使うことで、既存のテーブルからデータを取得し、そのまま別のテーブルへ挿入できます。この記事では、実際にサンプルテーブルを作成しながら、テーブル間でデータをコピーする手順を順番に解説します。
手順1:コピー元のテーブルを作成する
まず、コピー元となるテーブル「DemoTabe1」を作成します。
mysql> create table DemoTabe1 (Marks int); Query OK, 0 rows affected (0.66 sec)
手順2:データを挿入する
INSERTコマンドを使って、テーブルにいくつかのレコードを追加しましょう。
mysql> insert into DemoTabe1 values(68); Query OK, 1 row affected (0.18 sec) mysql> insert into DemoTabe1 values(89); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTabe1 values(99); Query OK, 1 row affected (0.17 sec) mysql> insert into DemoTabe1 values(39); Query OK, 1 row affected (0.11 sec) mysql> insert into DemoTabe1 values(49); Query OK, 1 row affected (0.12 sec)
手順3:レコードを確認する
SELECT文で、テーブル内のすべてのレコードを表示します。
mysql> select *from DemoTabe1;
実行結果は以下のとおりです。
+-------+ | Marks | +-------+ | 68 | | 89 | | 99 | | 39 | | 49 | +-------+ 5 rows in set (0.00 sec)
手順4:コピー先のテーブルを作成する
次に、データのコピー先となる2つ目のテーブル「DemoTabe2」を作成します。
mysql> create table DemoTabe2 (Score int); Query OK, 0 rows affected (0.66 sec)
手順5:INSERT INTO … SELECTでデータをコピーする
以下のクエリを実行すると、DemoTabe1の「Marks」列の値が、DemoTabe2の「Score」列へ一括で挿入されます。
mysql> insert into DemoTabe2(Score) select Marks from DemoTabe1; Query OK, 5 rows affected (0.16 sec) Records: 5 Duplicates: 0 Warnings: 0
手順6:コピー結果を確認する
SELECT文でDemoTabe2の内容を確認してみましょう。
mysql> select *from DemoTabe2;
実行結果を見ると、DemoTabe1と同じレコードが2つ目のテーブルにも正しくコピーされていることがわかります。
+-------+ | Score | +-------+ | 68 | | 89 | | 99 | | 39 | | 49 | +-------+ 5 rows in set (0.00 sec)
まとめ
INSERT INTO テーブル名(列名) SELECT 列名 FROM コピー元テーブル;という構文を使えば、SELECT文で取得した結果セットをそのまま別のテーブルへ挿入できます。WHERE句などを組み合わせれば、条件に一致するデータだけを抽出してコピーすることも可能です。テーブル間でのデータ移行や複製を行いたい場合に非常に便利な構文なので、ぜひ活用してください。
-
MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (
-
MySQLであるテーブルから別のテーブルへデータを挿入する方法(INSERT INTO SELECT)
MySQLであるテーブルから別のテーブルへデータをコピーして挿入したい場合は、INSERT INTO ... SELECT 文を使用します。この記事では、実際にテーブルを作成し、データを別テーブルへ移す手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. 元となるテーブルを作成する まず、コピー元となるテーブル「DemoTable1」を作成します。カラムは Id(int型)と FirstName(varchar型)の2つです。 mysql> create table DemoTable1 -> ( -> Id int, -> Fi