我该如何使用连接进行PL / SQL更新

时间:2019-09-17 12:47:38

标签: plsql sql-update

如何从另一个表更新表列。这是我的代码:

update table1 hn 
set  hn.changeColumn=es.changeColumn
from table1 hn
inner join table2 es on es.x=hn.xand es.rol_id=hn.rol_id
where hn.x= es.x and hn.rol_id = es.rol_id

我想用table2的column(changeColumn)值设置table1的column(changeColumn)

我该怎么做。谢谢

2 个答案:

答案 0 :(得分:3)

如果要将此查询转换为Oracle,则需要MERGE INTO语句-

MREGE INTO table1 hn 
USING table2 es
ON (es.x=hn.x and es.rol_id=hn.rol_id)
WHEN MATCHED THEN
     UPDATE
     SET  hn.changeColumn=es.changeColumn

答案 1 :(得分:1)

在Oracle上编写此查询的一种有效方法是:

UPDATE table1 t1
SET changeColumn = (SELECT t2.changeColumn
                    FROM table2 t2
                    WHERE t1.x = t2.x AND t1.rol_id = t2.rol_id);

这假设您的连接条件最多只能从自连接中生成一对mstching记录。如果没有,那么我们将不得不修改逻辑。

相关问题