如何从另一个表更新表列。这是我的代码:
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)
我该怎么做。谢谢
答案 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记录。如果没有,那么我们将不得不修改逻辑。