びぼーろくっ!

誰かに見せるわけでもないけど、備忘録として。。

知らなかった!SELECT文の結果をINSERTする方法

今回はSQLです。(postgresqlを使用)
本番環境のマスタースクリプトを更新する作業があったのですが、本番環境のデータは参照できないので
正規表現などで一気にスクリプトファイルを組むわけにもいかずもやもやしてました。

調べた結果SELECT-INSERTなるものがあったのですね!
(DB周りは他の人が担当してたので詳しい知識はなかった orz)

こんなテーブルやレコードがあるとします。

insert_table

id colomn2 colomn3
null null null

select_table

id birthday job
1 1995/01/01 developer
2 1996/01/01 lawyer
3 1997/01/01 docter

やりたい事はinsert_tableにselect_tableのidを反映したい場合です。
固定値が混ざったレコードを登録したい場合はSELECT文に固定値を書き込めばいいです。

    • insert_table(登録したいレコードのテーブル
    • select_table(既に存在するテーブル)
INSERT INTO insert_table(
     id, column2, column3
)
SELECT id, '固定値', now()
FROM   select_table;

結果をみてみましょう・・・

SELECT * FROM insert_table;

insert_table

id colomn2 colomn3
1 固定値 2017/4/6
2 固定値 2017/4/6
3 固定値 2017/4/6

今日は以上です。

どうでもいいけど・・・はてぶろってpostgresqlの記法ってないのかな・・
mysqlでコードハイライトしたけど、それっぽいのが見つからなかった・・・