SELECT結果でUPDATE

前提

 テーブル T1
  id | num 
 ----+-----
   1 | 100
   2 | 200
   3 | 300
 テーブル T2
  id | num 
 ----+-----
   1 |   1
   3 |   3

求めたい結果

 テーブルT1
  id | num 
 ----+-----
   1 | 1
   2 | 200
   3 | 3

SQL

 UPDATE t1 SET num = a.num FROM (SELECT * FROM t2) a WHERE t1.id = a.id;

注意

以下のような相関サブクエリを使ったUPDATEではid 2の行のnumがヌルになってしまう。

 UPDATE t1 SET num = ( SELECT num FROM t2 WHERE t2.id = t1.id );
 テーブルT1
   id | num 
 ----+-----
   1 |   1
   2 |    
   3 |   3

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS

Last-modified: 2007-10-19 (金) 04:47:39