- 追加された行はこの色です。
- 削除された行はこの色です。
* SELECT結果でUPDATE [#j9082936]
** 前提 [#tf08d825]
テーブル T1 テーブル T2
id | num id | num
----+----- ----+-----
1 | 1 | 100
2 | 2 | 200
3 | 3 | 300
テーブル T1
id | num
----+-----
1 | 100
2 | 200
3 | 300
テーブル T2
id | num
----+-----
1 | 1
3 | 3
** 求めたい結果 [#j3be81ab]
テーブルT1
id | num
----+-----
1 | 1
2 | 200
3 | 3
** SQL [#edec769b]
UPDATE t1 SET num = a.num FROM (SELECT * FROM t2) a WHERE t1.id = a.id;
** 注意 [#x1add8ed]
以下のような相関サブクエリを使った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