MySQLで同じデータベース内の別テーブルへ列のデータをコピーする方法
INSERT INTO SELECT文で列データをコピーする方法
MySQLである列のデータを別の列にコピーしたい場合、INSERT INTO SELECT文を使用するのが最も簡単です。この構文を使えば、同じデータベース内の異なるテーブル間でも、少ない手順でデータを転送できます。
ここからは、実際のサンプルコードとともに具体的な手順を見ていきましょう。
手順1:コピー元のテーブルを作成する
まず、データのコピー元となるテーブルを作成します。
mysql> create table DemoTable1 (PlayerScore int);
Query OK, 0 rows affected (0.46 sec)
手順2:insertコマンドでレコードを挿入する
次に、作成したテーブルにinsertコマンドを使って複数のレコードを追加します。
mysql> insert into DemoTable1 values(98);
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable1 values(81);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1 values(76);
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable1 values(88);
Query OK, 1 row affected (0.15 sec)
手順3:select文でレコードを確認する
select文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable1;
実行すると、以下のような結果が出力されます。
+-------------+
| PlayerScore |
+-------------+
| 98 |
| 81 |
| 76 |
| 88 |
+-------------+
4 rows in set (0.00 sec)
手順4:コピー先のテーブルを作成する
続いて、データのコピー先となる2つ目のテーブルを作成します。
mysql> create table DemoTable2 (Marks int);
Query OK, 0 rows affected (0.47 sec)
手順5:INSERT INTO SELECT文でデータをコピーする
いよいよ、ある列から別の列(同一データベース内の異なるテーブル)へデータをコピーします。以下のようにINSERT INTO SELECT文を記述します。
mysql> insert into DemoTable2(Marks) select PlayerScore from DemoTable1;
Query OK, 4 rows affected (0.19 sec)
Records: 4 Duplicates: 0 Warnings: 0
このクエリでは、DemoTable1の「PlayerScore」列の値をすべて取得し、そのままDemoTable2の「Marks」列に挿入しています。「Records: 4」と表示されている通り、4件のレコードが正常にコピーされました。
手順6:コピー結果を確認する
最後に、select文でコピー先テーブルの中身を確認しましょう。
mysql> select *from DemoTable2;
実行結果は以下の通りです。
+-------+
| Marks |
+-------+
| 98 |
| 81 |
| 76 |
| 88 |
+-------+
4 rows in set (0.00 sec)
まとめ
このように、INSERT INTO SELECT文を活用すれば、WHERE句などの条件を組み合わせることで特定のレコードだけを抽出しながらコピーすることも可能です。テーブル間でのデータ移行やバックアップ作成など、実務でも頻繁に使われるテクニックなので、ぜひ覚えておきましょう。
-
MySQLで値が「0」の場合に別の列から値を取得する方法
MySQLで値が「0」の場合に別の列から値を取得する方法MySQLでは、IF()関数を使用することで、特定の列の値が「0」だった場合に、別の列の値を代わりに取得できます。条件分岐を1つのクエリ内で簡単に実現できる便利な関数です。IF()関数の基本構文select IF(yourColumnName1=0,yourColumnName2,yourColumnName1) as anyAliasName from yourTableName;この構文では、最初の列の値が「0」であれば2番目の列の値を返し、「0」以外であれば最初の列の値をそのまま返します。サンプルテーブルの作成まず、動作確認用のテー
-
【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 (