web-dev-qa-db-fra.com

Mise à jour de la table Redshift avec jointure

J'ai 3 tableaux t1, t2 et t3.
t1 a 2 colonnes-> id1, val1

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

alors je dois mettre à jour val1 et val3. Mais j'ai répéter id1 et chacun devrait avoir le même val3

J'utilise

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

Mais pas en mesure de le faire.

11
oxy_js

La syntaxe correcte est:

UPDATE table_name SET column = { expression | DÉFAUT } [...]
[FROM fromlist ]
[OERE condition ]

Votre instruction UPDATE doit donc ressembler à ceci:

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

Voir le documentation Redshift et leurs exemples complets UPDATE .

11
moertel

J'avais besoin d'obtenir des valeurs de l'autre table, t2.val3, sur Redshift. J'ai utilisé ce qui suit

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

Je dois renommer t1. Sinon, Redshift se plaint.

9
Jie