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

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句を外せば全レコードをコピーでき、複数の列を指定すればそれらをまとめてコピーすることも可能です。バックアップや集計用テーブルの作成など、さまざまな場面で活用できる便利な構文なので、ぜひ覚えておきましょう。

  1. MySQLで別テーブルのIDからユーザー名を取得する方法|JOINの使い方を徹底解説

    MySQLでは、別々のテーブルに保存されたデータをIDをキーに関連付けて取得したい場面が多くあります。そのような場合にはJOIN(内部結合)を使うことで、複数のテーブルを結合し、目的のユーザー名を簡単に取り出すことができます。 本記事では、実際にサンプルテーブルを作成しながら、JOINクエリの書き方をステップごとに解説します。 1つ目のテーブル「demo77」を作成する まず、ユーザーID(userid)とユーザー名(username)を格納するテーブルを作成します。useridは主キーとして設定します。 mysql> create table demo77 -> (

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

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