【发布时间】:2018-09-01 12:11:39
【问题描述】:
我正在研究 SQL Server、Oracle、DB2 数据库。
目前,我正在执行以下 2 个更新语句来更新一个表。
更新 1:
UPDATE TABLE1
SET COL1=TABLE2.ATTRIBUTE1,
COL2=TABLE2.ATTRIBUTE2,
COL3=TABLE2.ATTRIBUTE3
FROM TABLE1
INNER JOIN TABLE2
ON COL1=TABLE2.PID1
AND COL2=TABLE2.PID2
WHERE ROWNUM<10
更新 2:
UPDATE TABLE1
SET COL1=’123-4567890-1’,
COL2=’0000000000’,
COL3=’CONSTANT FULL NAME’
WHERE NOT EXISTS (SELECT 1 FROM TABLE2 WHERE COL1=TABLE2.PID1)
更新 1,如果值与表 2 匹配,则有助于更新表 1,并且 更新 2,如果值与 Table2 不匹配,则有助于更新 TABLE1
有没有其他方法可以将两个更新语句转换为单个更新语句?
注意:我们也可以使用 MERGE,但如果数据匹配,MERGE 将更新,如果数据不匹配,则插入。
【问题讨论】:
-
您应该真正决定您正在处理的数据库。数据必须存储在某处。
-
感谢@GordonLinoff 的回复。我必须在 ORACLE、SQL SERVER、DB2 LUW、AS400、ZOS 中实现这个更新。
-
@GordonLinoff 上面的更新语句来自 SQL SERVER,我在不同的数据库中有不同类型的语句。
标签: sql sql-server oracle merge sql-update