MySQLでテーブルから別のテーブルへ特定の列をコピーする方法
MySQLでは、CREATE TABLE ... SELECT構文を使うことで、既存のテーブルから必要な列だけを抽出し、新しいテーブルに簡単にコピーできます。本記事では、具体的なサンプルコードと実行結果をもとに、その手順をわかりやすく解説します。
1. 元となるテーブルを作成する
まず、コピー元となるテーブル「DemoTable1」を作成します。
mysql> create table DemoTable1
-> (
-> Id int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.53 sec)
2. テーブルにレコードを挿入する
次に、INSERTコマンドを使用してテーブルにいくつかのレコードを挿入します。
mysql> insert into DemoTable1 values(10,'John');
Query OK, 1 row affected (0.23 sec)
mysql> insert into DemoTable1 values(11,'Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1 values(12,'Robert');
Query OK, 1 row affected (0.32 sec)
3. 挿入したレコードを確認する
SELECT文を実行して、テーブル内のすべてのレコードを表示してみましょう。
mysql> select *from DemoTable1;
出力結果
上記のクエリを実行すると、次のような出力が得られます。
+------+--------+
| Id | Name |
+------+--------+
| 10 | John |
| 11 | Chris |
| 12 | Robert |
+------+--------+
3 rows in set (0.00 sec)
4. 特定の列を別のテーブルへコピーする
ここが本題です。以下のクエリでは、DemoTable1から「Name」列だけを抽出し、新しいテーブル「DemoTable2」へコピーしています。WHERE句でId=11という条件を指定することで、該当するレコードのみがコピーされます。
mysql> create table DemoTable2 (
-> select Name from DemoTable1 where Id=11
-> );
Query OK, 1 row affected (0.70 sec)
Records: 1 Duplicates: 0 Warnings: 0
このように、CREATE TABLE文の中に直接SELECT文を記述することで、テーブルの作成とデータのコピーを一度に行うことができます。
5. コピー先のテーブルを確認する
最後に、「DemoTable2」のレコードをSELECT文で確認します。
mysql> select *from DemoTable2;
出力結果
実行すると、次のようにId=11のレコードの「Name」列の値だけがコピーされていることがわかります。
+-------+
| Name |
+-------+
| Chris |
+-------+
1 row in set (0.00 sec)
まとめ
CREATE TABLE 新テーブル名 (SELECT 列名 FROM 既存テーブル WHERE 条件); という形式を使えば、既存テーブルから任意の列・任意の条件でデータを抽出しながら、新しいテーブルを一括で作成できます。WHERE句を外せば全レコードをコピーでき、複数の列を指定すればそれらをまとめてコピーすることも可能です。バックアップや集計用テーブルの作成など、さまざまな場面で活用できる便利な構文なので、ぜひ覚えておきましょう。
-
MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説
MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (
-
MySQLであるテーブルから別のテーブルへデータを挿入する方法(INSERT INTO SELECT)
MySQLであるテーブルから別のテーブルへデータをコピーして挿入したい場合は、INSERT INTO ... SELECT 文を使用します。この記事では、実際にテーブルを作成し、データを別テーブルへ移す手順をサンプルコードと実行結果とともにわかりやすく解説します。 1. 元となるテーブルを作成する まず、コピー元となるテーブル「DemoTable1」を作成します。カラムは Id(int型)と FirstName(varchar型)の2つです。 mysql> create table DemoTable1 -> ( -> Id int, -> Fi