2011年3月18日金曜日

postgresqlでSELECTした結果でUPDATEをかける

どうも、俺@仕事中です。

postgresqlでSELECTした結果を利用してUPDATE(更新)をかける方法についてメモメモ。

dbname=# select * from table_a;
 id | name | ref_id 
----+------+--------
  1 | xxx  |     10
  2 | xxx  |     11
  3 | xxx  |     12
(3 rows)

dbname=#
dbname=# select * from table_b;
 id | name 
----+------
 10 | aaa
 11 | bbb
 12 | ccc
(3 rows)
テーブルはこういう状態だとします。
期待する結果は
dbname=# select * from table_a;
 id | name | ref_id 
----+------+--------
  1 | aaa  |     10
  2 | bbb  |     11
  3 | ccc  |     12
(3 rows)
table_bのnameでtable_aのnameを更新したい場合。

dbname=# UPDATE table_a
 SET name = foo.name
 FROM (SELECT * FROM table_b) AS foo
WHERE a.ref_id = foo.id;
これで出来ます!


以上でぇぇぇぇぇぇぇえぇす。

0 件のコメント: