2016-08-05 4 views
5

Ich habe 3 Tabelle t1, t2 und t3.
t1 hat 2 Säulen-> id1, val1Redshift Tabelle Update mit Join

t2 -> id2, val2 
t3 -> id3, val3 
If id1=id2 and id2 = id3 

dann muss ich val1 ad val3 aktualisieren. Aber ich habe id1 wiederholen und jeweils gleiche val3

haben soll ich

update t1 
inner join t2 on t1.id1 = t2.id2 
inner join t3 on t2.id2 = t3.id3 
set t1.val1 = t3.val3 
; 

aber nicht in der Lage, dies zu tun verwenden.

Antwort

1

Die korrekte Syntax ist:

UPDATE table_name SET column = {Ausdruck | DEFAULT} [, ...]
[FROM fromlist]
[WHERE Zustand]

So Ihre UPDATE Anweisung sollte wie folgt aussehen:

update t1 set val1 = val3 
from t2 inner join t3 on t2.id2 = t3.id3 
where t1.id1 = t2.id2 
; 

Siehe Redshift documentation und ihre umfassende UPDATE examples.

3

Ich musste Werte von der anderen Tabelle, t2.val3, auf Redshift abrufen. Ich habe folgendes verwendet

update t1 
set val1 = t2.val3 
from t2 join t1 t on t.id = t2.id; 

Ich muss t1 umbenennen. Ansonsten beschwert sich Redshift.