使用 SQL 中的两个连接更新 table 数据

Update table data using two joins in SQL

我有 3 个 table,它们相互关联。如何将数据从 table3 上传到 table1?

我试过这段代码:

UPDATE table1
SET t1.new_column = t3.old_data
FROM table1 t1
INNER JOIN table2 t2 ON t1.some_key = t2.some_key
INNER JOIN table3 t3 ON t2.some_key2 = t3.some_key2;

但是没用。谢谢!

在 Oracle 中更新联接是先使用联接,然后再使用更新。因此语法看起来像:

UPDATE (
select t1.new_column , t3.old_data
FROM table1 t1
INNER JOIN table2 t2 ON t1.some_key = t2.some_key
INNER JOIN table3 t3 ON t2.some_key2 = t3.some_key2
)
set new_column = old_data

连接必须产生所谓的“保留键”数据,即从查询返回的行必须与目标 table 中的行一一映射,否则您将得到一个错误。

出于这个原因,人们经常选择将他们的更新重写为 MERGE 语句。