Как обновить значение столбца таблицы в Redshift на основе объединения? - PullRequest
0 голосов
/ 13 марта 2020

Как мне обновить эту таблицу с помощью этого значения в Redshift:

UPDATE t1
SET col1 = 'new_value_here'
FROM t1
    LEFT JOIN t2
        on t1.col2 = t2.col2

WHERE
t1.country IN ('USA', 'JAPAN')
    AND t1.col1 = 'old_value_here'
    AND t2.col2 IS NULL;

Я получаю ошибку: «Целевая таблица должна быть частью предиката equijoin;»

1 Ответ

0 голосов
/ 14 марта 2020

Redshift не допускает никаких ВНЕШНИХ СОЕДИНЕНИЙ в предложении FROM запроса UPDATE. Вы должны использовать его как подзапрос или переписать свой лог c.

Вот что я сделал с вашим запросом, но с вашим лучшим пониманием данных вы можете sh написать его по-своему.

UPDATE t1
SET col1 = 'new_value_here'
from (select t1.col2 as t1_col2, t2.col2 as t2_col2 
      from t1 left join t2 on t1.col2=t2.col2) t1t2
WHERE t1t2.t1_col2=t1.col2
    and t1t2.t2_col2 is null
    and t1.country IN ('USA', 'JAPAN')
    AND t1.col1 = 'old_value_here';
...