sql - 从另一个 TABLE (Oracle) 更新 TABLE 中的多个列

标签 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;

最佳答案

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

关于sql - 从另一个 TABLE (Oracle) 更新 TABLE 中的多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1001753/

相关文章:

SQL查询根据加入日期获取客户数量

oracle通过join sql-92组合选择星号连接

java - Spring 什么时候不应该提交? (与 Oracle 自动提交相关)

oracle - 如何将oracle中的IDENTITY列重置为新值

php - 如何知道某个元素可以在哪个页面找到?

mysql - 简单的触发抛出错误并停止执行

mysql - 我可以创建从单个 FK 到多个 PK 的外键约束吗

java - 是否值得从 Oracle JVM 1.6.0_07 升级到更新的版本?

oracle - Oracle 中计划作业失败时发送通知电子邮件

mysql - 如何使复合键唯一?