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 行)

最新の記事

プロフィール

流されるままにウェブ業界で仕事しています。
主にLAPP環境でPHPを書いています。
最近はjQueryをよく書いています。