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

MySQLの単一クエリで最初のテーブルから値を取得し、別のテーブルへ挿入する方法

MySQLでは、INSERT INTO ... SELECT 構文を使うことで、既存のテーブルから値を取得(SELECT)しながら、そのまま別のテーブルへ挿入することができます。この記事では、実際に2つのテーブルを作成し、1つのクエリだけで最初のテーブルの値を2番目のテーブルにコピーする手順を解説します。

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

まず、コピー元となるテーブル「DemoTable1」を作成します。

mysql> create table DemoTable1(
   Value int
);
Query OK, 0 rows affected (0.65 sec)

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

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

mysql> insert into DemoTable1 values(67);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1 values(46);
Query OK, 1 row affected (0.11 sec)

SELECT文ですべてのレコードを表示してみましょう。

mysql> select *from DemoTable1;

実行結果は以下のとおりです。

+-------+
| Value |
+-------+
| 67    |
| 46    |
+-------+
2 rows in set (0.00 sec)

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

続いて、コピー先となるテーブル「DemoTable2」を作成します。カラム名は「Score」としています。

mysql> create table DemoTable2(
   Score int
);
Query OK, 0 rows affected (0.70 sec)

ステップ4:INSERT INTO ... SELECT でデータをコピーする

ここがポイントです。以下のように INSERT INTO ... SELECT を使えば、単一のクエリだけで最初のテーブルの値を2番目のテーブルに挿入できます。

mysql> insert into DemoTable2(Score) select Value from DemoTable1;
Query OK, 2 rows affected (0.13 sec)
Records: 2 Duplicates: 0 Warnings: 0

「Records: 2」と表示されているように、DemoTable1の2件のレコードが正常にコピーされました。

ステップ5:結果を確認する

SELECT文でDemoTable2の中身を確認します。

mysql> select *from DemoTable2;

実行結果は以下のとおりです。

+-------+
| Score |
+-------+
| 67    |
| 46    |
+-------+
2 rows in set (0.00 sec)

まとめ

insert into テーブル名(カラム名) select カラム名 from コピー元テーブル; の形式を使うことで、アプリケーション側でデータを取得・加工することなく、SQLだけでテーブル間のデータ移行やバックアップを簡単に行えます。なお、SELECT側にWHERE句を追加すれば、条件に一致する行だけをコピーすることも可能です。

  1. MySQLでテーブルのデータを選択して、同じデータベース内の別のテーブルに挿入する方法

    あるテーブルから別のテーブルへデータを挿入するには、INSERT INTOステートメントを使用します。この記事では、SELECT文で取得したデータを、同じデータベース内の別テーブルへ挿入する手順を、実際のSQL文と実行結果とともに解説します。1. 元となるテーブルを作成するまず、データのコピー元となるテーブル「DemoTable1」を作成します。mysql> create table DemoTable1      (      Id int,      FirstName varchar(20),

  2. MySQLで列の値から先頭の1文字を取り出し、別の列に挿入する方法

    はじめにMySQLである列(カラム)の値から先頭の1文字を取り出し、それを別の列に格納したい場合があります。このようなときに便利なのが LEFT() 関数です。LEFT() 関数は、文字列の左端から指定した文字数だけを抽出することができます。ここでは、実際にテーブルを作成しながら、その手順を順番に解説していきます。1. テーブルを作成するまず、サンプル用のテーブルを作成しましょう。ここでは「FirstLetter」(先頭文字を格納する列)と「Title」(元となる文字列の列)の2つの列を持つテーブルを定義します。mysql> create table DemoTable2036