【MySQL】SELECTした結果をINSERTする方法を解説

※ この記事にはアフィリエイトリンクが含まれます

MySQLでデータを操作する際に、あるテーブルのデータを別のテーブルにコピーしたり移動したりしたイ場面は多くあります。例えば、データのバックアップを取りたいときや、異なるテーブルに集計したデータを挿入する必要がある場合です。

この記事では、MySQLのINSERT INTO SELECT 構文を使って、SELECT で取得した結果を別のテーブルに INSERT する方法を学びます。このテクニックは、データの移行やテーブル間の同期、データの結合に非常に役立つかと思います。

基本構文

MySQLで SELECT の結果を別のテーブルに挿入するためには、INSERT INTO SELECT 構文を使用します。この構文を使うことで、複数の INSERT 文を手動で書かずに、簡単にデータを移行できます。

INSERT INTO 対象テーブル (カラム1, カラム2, ...)
SELECT カラム1, カラム2, ...
FROM 元テーブル
WHERE 条件;

上記構文の内容を解説していきます。

  • 対象テーブル
    データを挿入するテーブルを指定します。
  • カラム1、カラム2
    SELECT で取得したデータを挿入する対象テーブルのカラム名を指定します。
  • 元テーブル
    データを取得するテーブルを指定します。
  • WHERE 条件
    任意データを選択する際の条件を指定します。

例として、old_table から new_table にデータをコピーする際のクエリを見ていきましょう。

INSERT INTO new_table (id, name, age)
SELECT id, name, age
FROM old_table
WHERE age > 30;

このクエリは、old_table から age が30以上のすべての行を new_table に挿入します。
new_table のカラム数と、SELECT 文で取得するカラム数が一致していることが重要です。

列数・型の一致に関する注意点

INSERT INTO SELECT 構文を使用する際に注意すべき重要な点は、対象テーブルのカラム数と型が、SELECT 文の結果と一致していることです。これが一致していないと、エラーが発生してしまいます。

カラム数の一致

INSERT INTO で指定するカラムの数と、SELECT で取得するカラムの数は同じでなければなりません。例えば、以下の例では、new_table に3つのカラムを指定しているため、SELECT で返されるカラムも3つでなければいけません。

INSERT INTO new_table (id, name, age)
SELECT id, name, age
FROM old_table;

もしカラム数が一致しない場合は、以下のようなエラーが発生します。

Column count doesn't match value count at row 1

クエリを実行する前に、INSERTするカラムとSELECTするカラムの数が同じであるかを確認するようにしましょう。

データ型の一致

また、カラムのデータ型が一致しているかどうかも重要です。INSERT するデータが、対象テーブルのカラムのデータ型と互換性がない場合、エラーが発生する可能性があります。

例えば、new_tableage カラムが整数型(INT)である場合、SELECT 文で age に対して文字列型(VARCHAR)のデータを取得すると、次のようなエラーが発生することがあります。

Incorrect integer value: 'thirty' for column 'age' at row 1

クエリを実行する前に、データの型が一致しているか確認するようにしましょう。

まとめ

今回の記事では、MySQLで SELECT 文の結果を別のテーブルに INSERT する方法について学びました。 INSERT INTO SELECT 構文は、データのコピーや意向を効率的に行うことができます。特に、バックアップを取る際やデータを結合、テーブル間でのデータの同期をとる時などで非常に役立ちます。

MySQLを効率よく学びたい方はUdemyがおすすめ

もっとわかりやすくMySQLを学びたいという方には、Udemyがおすすめです。Udemyは、オンライン学習を手軽に始められる便利なプラットフォームで、初心者から上級者向けまで、様々なレベルのSQLコースがそろっています。ですので自身のスキルや目的にあったコースを選ぶことができます。

また、Udemyはコミュニティのサポートもしており、質問や情報交換も行えるため、学習を進めている中で浮かんだ疑問などを解消する手助けを受けることもできます。

IT資格の人気オンラインコース

Udemyは定期的に90%OFFなどの規模でセールを開催しているので、そのタイミングを狙うのもありでしょう。今までにセールが開催された時期をまとめました。

  • 季節ごとのセール
    年末年始や夏季、春季などの特別な時期に大規模なセールを実施
  • 祝日セール
    バレンタインデー、感謝祭、クリスマスなどの祝日にもセールを実施
すぐに役立つスキルを 身につけよう! セール開催中!

コメント