SELECT結果をINSERT/UPDATE
抽出した結果を別テーブルにコピー
SELECT結果をINSERT
SQL
--SELECT結果をINSERT
INSERT INTO bar SELECT foo_id, foo_name FROM foo;
コピー元
pgdb=# SELECT * FROM foo;
foo_id | foo_name | foo_category | foo_flg
--------+----------+--------------+---------
100001 | リンゴ | 1 | t
100002 | バナナ | 1 | f
100003 | ネコ | 2 | t
100004 | イヌ | 2 | f
(4 行)
INSERT(コピー)後
pgdb=# SELECT * FROM bar;
bar_id | bar_name | bar_category | bar_flg
--------+----------+--------------+---------
100001 | リンゴ | |
100002 | バナナ | |
100003 | ネコ | |
100004 | イヌ | |
(4 行)
SQL
--SELECT結果と固定値をINSERT
INSERT INTO bar (bar_id, bar_name, bar_category, bar_flg)
SELECT foo_id, foo_name, '1', true FROM foo;
INSERT(コピー)後
pgdb=# SELECT * FROM bar;
bar_id | bar_name | bar_category | bar_flg
--------+----------+--------------+---------
100001 | リンゴ | 1 | t
100002 | バナナ | 1 | t
100003 | ネコ | 1 | t
100004 | イヌ | 1 | t
(4 行)
SELECT結果をUPDATE
SQL
--SELECT結果をUPDATE
UPDATE bar as PASTE SET bar_name = (
SELECT foo_name FROM foo as COPY WHERE COPY.foo_id = PASTE.bar_id
)
WHERE PASTE.bar_id = 100001;
コピー前
pgdb=# SELECT * FROM bar;
bar_id | bar_name | bar_category | bar_flg
--------+------------------+--------------+---------
100001 | コーヒー | 3 | t
100002 | ミルク | 3 | f
100003 | テニス | 4 | t
100004 | バスケットボール | 4 | f
(4 行)
UPDATE(コピー)後
pgdb=# SELECT * FROM bar;
bar_id | bar_name | bar_category | bar_flg
--------+------------------+--------------+---------
100002 | ミルク | 3 | f
100003 | テニス | 4 | t
100004 | バスケットボール | 4 | f
100001 | リンゴ | 3 | t
(4 行)