3つのテーブルt1、t2、t3があります。
t1には2列-> id1、val1があります
t2 -> id2, val2
t3 -> id3, val3
If id1=id2 and id2 = id3
次に、val1とval3を更新する必要があります。しかし、私はid1を繰り返しており、それぞれに同じval3が必要です
使っています
update t1
inner join t2 on t1.id1 = t2.id2
inner join t3 on t2.id2 = t3.id3
set t1.val1 = t3.val3
;
しかし、これはできません。
正しい構文は次のとおりです。
UPDATEtable_nameSET column = {expression|デフォルト } [、...]
[FROMfromlist]
[WHERE条件]
したがって、UPDATE
ステートメントは次のようになります。
update t1 set val1 = val3
from t2 inner join t3 on t2.id2 = t3.id3
where t1.id1 = t2.id2
;
Redshiftのドキュメント とその包括的な UPDATE
の例 を参照してください。
Redshiftで他のテーブルt2.val3から値を取得する必要がありました。私は以下を使用しました
update t1
set val1 = t2.val3
from t2 join t1 t on t.id = t2.id;
T1の名前を変更する必要があります。それ以外の場合、Redshiftは不平を言います。