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

MySQLで1つのテーブルからフィールドを選択して別のテーブルにINSERTする方法

はじめに

MySQLでは、INSERT INTO ... SELECT構文を使用することで、あるテーブルから特定のフィールドを選択し、その結果を別のテーブルに直接挿入できます。本記事では、テーブルの作成からデータの挿入、結果の確認までを、実際のサンプルコードとともにわかりやすく解説します。

ステップ1:最初のテーブルを作成する

まず、以下のコマンドで元となるテーブル「DemoTable1」を作成します。

mysql> create table DemoTable1
-> (
-> StudentId int,
-> StudentName varchar(20)
-> );
Query OK, 0 rows affected (0.64 sec)

ステップ2:レコードを挿入する

INSERTコマンドを使って、テーブルにいくつかのレコードを追加します。

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

mysql> insert into DemoTable1 values(11,'Chris');
Query OK, 1 row affected (0.15 sec)

ステップ3:レコードを確認する

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

mysql> select *from DemoTable1;

出力結果

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
| 10 | John |
| 11 | Chris |
+-----------+-------------+
2 rows in set (0.00 sec)

ステップ4:2つ目のテーブルを作成する

次に、データの挿入先となる2つ目のテーブル「DemoTable2」を作成します。

mysql> create table DemoTable2
-> (
-> CustomerId int,
-> CustomerName varchar(100)
-> );
Query OK, 0 rows affected (0.82 sec)

ステップ5:SELECTしたフィールドを別テーブルへINSERTする

ここが本題です。1つのテーブルからフィールドを選択し、別のテーブルに挿入するためのクエリは以下の通りです。

mysql> insert into DemoTable2(CustomerId,CustomerName) select StudentId,StudentName from DemoTable1 where StudentId=11;
Query OK, 1 row affected (0.20 sec)
Records: 1 Duplicates: 0 Warnings: 0

このクエリでは、DemoTable1から「StudentId = 11」という条件に一致するレコードのみを選択し、そのStudentIdとStudentNameの値を、DemoTable2のCustomerIdとCustomerNameにそれぞれ挿入しています。このように、カラム名が異なるテーブル間でも、対応関係を明示することで問題なくデータをコピーできます。

ステップ6:挿入結果を確認する

最後に、2つ目のテーブルのレコードを再度確認してみましょう。

mysql> select *from DemoTable2;

出力結果

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
| 11 | Chris |
+------------+--------------+
1 row in set (0.00 sec)

まとめ

INSERT INTO テーブル名(カラム名) SELECT ...という構文を使えば、WHERE句による条件絞り込みを行いながら、別テーブルへのデータ挿入をたった1つのSQL文で実行できます。大量のデータを移行したり、条件に合致するレコードだけを抽出してコピーしたりする際に非常に便利なテクニックなので、ぜひ活用してください。

  1. 【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 (

  2. MySQLであるテーブルから別のテーブルへデータを挿入する方法(INSERT INTO SELECT)

    MySQLであるテーブルから別のテーブルへデータをコピーして挿入したい場合は、INSERT INTO ... SELECT 文を使用します。この記事では、実際にテーブルを作成し、データを別テーブルへ移す手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. 元となるテーブルを作成する まず、コピー元となるテーブル「DemoTable1」を作成します。カラムは Id(int型)と FirstName(varchar型)の2つです。 mysql> create table DemoTable1 -> ( -> Id int, -> Fi