MySQL

MySQL

【MySQL】SELECTした結果をINSERTするSQLの書き方

2019/04/02

以前、SELECTした結果でテーブルのレコードをUPDATEするSQLを紹介しましたが、今度は SELECTした結果を、新規のテーブルにINSERTするSQLを備忘録としてポストします。

SELECT結果をINSERTするSQL

今回もさっさと答えを書きましょう。

UPDATEと同じく、最終的に行いたい INSERT を先に書き、INSERT対象レコードを SELECT するという単純な構成。
なるほどですね。

今回のシチュエーション

ここで終わっても良いのですが、必要になった経緯など。
数万レコードを月次処理用のテーブルへインサートし、そのインサートされたレコードをJOINしてSELECTするという流れのなかで必要となってきた技術です。

全体としてなかなか重い処理ということもあり、月次処理用テーブルにもインデックスを張りたかったので、処理のたびに一旦 TRANCATE でテーブルを初期化してから、必要なレコードを放り込んでいく流れとしました。

もっと技術のある人はもう少しスマートな方法を採ると思うのですが、まぁ、そこは置いておきましょう(苦笑)

実例(に近い)SQL

monthly_datas が月次処理用のテーブルです。
そこに services テーブルから取得したレコード(service_id, service_name)をインサートする仕様です。

書くたびに思うのですが、SQLって便利ですよねぇ。

-MySQL
-, , ,