从另一个表更新一个表中的多个列 (Oracle)

hro*_*oss 5 sql oracle

我想根据另一个表中的值更新一个表中的多个列。

我知道如何在 T-SQL 中编写更新语句来完成我想要的操作(尚未测试以下内容)。问题是我正在尝试将其转换为 Oracle 数据库。有谁知道如何在 Oracle 中执行以下操作:

UPDATE oldauth SET
  AUTHUNIQUENAME=newauth.AUTHUNIQUENAME
  DESCRIPTION=newauth.DESCRIPTION
  MAPPINGAUTHNAME=newauth.MAPPINGAUTHNAME
FROM
 (SELECT * FROM USERS1 WHERE AUTHSOURCEID=100) oldauth
LEFT JOIN
 (SELECT * FROM USERS2 WHERE AUTHSOURCEID=200) newauth
ON 
oldauth.AUTHUSERNAME=newauth.AUTHUSERNAME;
Run Code Online (Sandbox Code Playgroud)

Qua*_*noi 3

MERGE
INTO   (
       SELECT  *
       FROM    users1
       WHERE   AUTHSOURCEID=100
       ) oldauth
USING  (
       SELECT  *
       FROM    users2
       WHERE   AUTHSOURCEID=200
       ) newauth
ON     oldauth.AUTHUSERNAME=newauth.AUTHUSERNAME
WHEN MATCHED THEN
UPDATE
SET    AUTHUNIQUENAME=newauth.AUTHUNIQUENAME,
       DESCRIPTION=newauth.DESCRIPTION,
       MAPPINGAUTHNAME=newauth.MAPPINGAUTHNAME
Run Code Online (Sandbox Code Playgroud)