MySQLであるテーブルから別のテーブルへデータを挿入する方法(INSERT INTO SELECT)
MySQLであるテーブルから別のテーブルへデータをコピーして挿入したい場合は、INSERT INTO ... SELECT 文を使用します。この記事では、実際にテーブルを作成し、データを別テーブルへ移す手順をサンプルコードと実行結果とともにわかりやすく解説します。
1. 元となるテーブルを作成する
まず、コピー元となるテーブル「DemoTable1」を作成します。カラムは Id(int型)と FirstName(varchar型)の2つです。
mysql> create table DemoTable1
-> (
-> Id int,
-> FirstName varchar(20)
-> );
Query OK, 0 rows affected (0.49 sec)
2. サンプルデータを挿入する
INSERT文を使って、DemoTable1にレコードを追加します。
mysql> insert into DemoTable1 values(101,'Adam'); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable1 values(102,'John'); Query OK, 1 row affected (0.11 sec)
SELECT文で全レコードを表示して確認してみましょう。
mysql> select *from DemoTable1;
実行すると、以下のような出力が得られます。
+------+-----------+ | Id | FirstName | +------+-----------+ | 101 | Adam | | 102 | John | +------+-----------+ 2 rows in set (0.00 sec)
3. コピー先のテーブルを作成する
次に、データの挿入先となる2つ目のテーブル「DemoTable2」を作成します。ここではカラム名を EmployeeId と EmployeeName としています。ポイントは、元テーブルとカラム名が異なっていても問題ないという点です。
mysql> create table DemoTable2
-> (
-> EmployeeId int,
-> EmployeeName varchar(20)
-> );
Query OK, 0 rows affected (0.42 sec)
4. INSERT INTO SELECT文でデータをコピーする
いよいよ、あるテーブルから別のテーブルへデータを挿入するクエリです。INSERT INTO の後にコピー先のカラム名を指定し、SELECT 文で元テーブルから取得した値をそのまま流し込みます。
mysql> insert into DemoTable2(EmployeeId,EmployeeName) select Id,FirstName from DemoTable1; Query OK, 2 rows affected (0.15 sec) Records: 2 Duplicates: 0 Warnings: 0
「Query OK, 2 rows affected」と表示され、2件のレコードが正常にコピーされたことがわかります。
5. 結果を確認する
DemoTable2に対してSELECT文を実行し、データが正しく挿入されているか確認しましょう。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+------------+--------------+ | EmployeeId | EmployeeName | +------------+--------------+ | 101 | Adam | | 102 | John | +------------+--------------+ 2 rows in set (0.00 sec)
まとめ
MySQLでテーブル間のデータコピーを行うには、INSERT INTO コピー先テーブル(カラム名...) SELECT カラム名... FROM コピー元テーブル という構文を使うのが基本です。カラム名や順序が異なるテーブル間でも、対応関係を明示的に指定すれば柔軟にデータを移行できます。WHERE句を組み合わせれば、条件に合致するレコードだけを抽出してコピーすることも可能なので、バックアップや集計用テーブルの作成などにも幅広く活用できます。
-
【MySQL】別のテーブルのデータを参照してテーブルを更新する方法(UPDATE+JOIN)
MySQLでは、UPDATEコマンドとJOINを組み合わせることで、別のテーブルのデータを参照しながら、対象のテーブルを効率的に更新できます。本記事では、2つのテーブルを使った具体的なサンプルを通じて、その手順をわかりやすく解説します。 手順1:参照元のテーブルを作成する まず、氏名データを保持する1つ目のテーブル「demo54」を作成します。 mysql> create table demo54-> (-> firstName varchar(20),-> lastName varchar(20)-> );Query OK, 0 rows affected (
-
MySQLのINSERT INTO SELECT文で別のテーブルの値を挿入する方法
あるテーブルの値を基に別のテーブルへデータを挿入したい場合は、INSERT INTO SELECT文を使用します。この構文では、SELECT文で抽出した結果セットをそのまま対象テーブルへ流し込めるため、テーブル間のデータ移行やコピーにもっとも効率的な方法の一つです。 以下の手順で、実際の動作を順番に確認していきましょう。 手順1:元となるテーブルを作成する まず、データのコピー元となるテーブル「demo82」を作成します。 mysql> create table demo82 -> (