2016-08-05 2 views
5

У меня есть 3 таблицы t1, t2 и t3.
t1 имеет 2 столбцам> id1, знач1Обновление таблицы Redshift с соединением

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 
; 

Но не в состоянии сделать это.

ответ

1

Правильный синтаксис:

UPDATE table_name SET столбец = {выражение | DEFAULT} [...]
[ОТ fromlist]
[ГДЕ состояние]

Так что ваш UPDATE заявление должно выглядеть следующим образом:

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

Redshift documentation Смотрите и их всеобъемлющий UPDATE examples.

3

Мне нужно было получить значения из другого стола t2.val3 в Redshift. Я использовал следующее:

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

Мне нужно переименовать t1. В противном случае жалуется Redshift.

Смежные вопросы