Следующий за SQL оператор UPDATE будет работать для случаев, если JOIN между table1 и table2 равны 1 к 1 (или если существует отношение 1 к 1 между целевой таблицей и набором результатов JOIN)
В этом случае столбец val целевой таблицы обновляется, в противном случае возвращается ошибка
UPDATE table1 AS a
SET a.val = table2.val
FROM table1, table2
WHERE table1.id = table2.id;
С другой стороны, если объединение вызывает несколько возвратов для одной строки table1, возникает нестабильная ошибка.
Если вы хотите суммировать значения столбцов умножающихся строк, возможно, следующий подход может помочь
Сначала просуммируйте все строки таблицы2 в базах таблицы1 и используйте этот подвыбор как новую временную таблицу, затем используйте это в операторе UPDATE FROM
UPDATE table1 AS a
SET a.val = table2.val
FROM table1
INNER JOIN (
select id, sum(val) val from table2 group by id
) table2
ON table1.id = table2.id;
Я пытался решить проблему, используя две таблицы. В вашем случае, вероятно, вы будете использовать table2 и table3 в операторе подзапроса
Надеюсь, это ответ вы искали