我正在使用 Oracle 数据库,并且有时会更新其他表中的字段。我的问题是它正在更新所有记录而不是指定的条件。 例如,我试图从 ADDRESS 表更新 EMPLOYEE 表中的 perm_address 和 temp_address 。现在,我正在使用下面的查询。但是,它正在更新所有记录。
UPDATE EMPLOYEE EMP
SET (EMP.PERM_ADDRESS, EMP.TEMP_ADDRESS) =
(SELECT ADDR.PERM_ADDR,ADDR.TEMP_ADDR
FROM ADDRESS ADDR
WHERE ADDR.ID=EMP.ADDRESS_ID
);
在Oracle中如何处理这种情况?通常,如何处理从多个表到源表的更新?
提前致谢......
最佳答案
添加 WHERE
子句以仅更新匹配的记录:
UPDATE EMPLOYEE EMP
SET (EMP.PERM_ADDRESS, EMP.TEMP_ADDRESS) =
(SELECT ADDR.PERM_ADDR, ADDR.TEMP_ADDR
FROM ADDRESS ADDR
WHERE ADDR.ID = EMP.ADDRESS_ID
)
WHERE EXISTS (SELECT 1 FROM ADDRESS ADDR WHERE ADDR.ID = EMP.ADDRESS_ID);
关于sql - 甲骨文 : How to update multiple columns from different table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37469361/