Db2 iseries INSERT ON DUPLICATE KEY
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Db2 iseries INSERT ON DUPLICATE KEY相关的知识,希望对你有一定的参考价值。
有谁知道DB2 for i(V6r1)是否支持类似的东西
INSERT ON DUPLICATE KEY UPDATE.
我需要使用连接进行更新,但不想使用子查询。
答案
您可以使用'MERGE'来解决这个问题。像这样:
1.步骤一:表'TEST'有一个表格结构(A,B,C),主键为'A',存在一个数据记录(1,2,3)。
2.第二步:现在你可以使用这个SQL命令插入一条记录(1,9,9),如下所示:
MERGE INTO TEST AS T
USING (VALUES( 1, 9, 9)) AS DAT(A, B, C)
ON T.A = DAT.A
WHEN MATCHED THEN UPDATE SET T.C = DAT.C
WHEN NOT MATCHED THEN INSERT (A, B, C) VALUES (DAT.A, DAT.B, DAT.C)
另一答案
在IBM i v7.1中,您将获得新的MERGE statement
在v6.1中,你可以找到匹配行的UPDATE
,然后是没有匹配的INSERT
的另一个语句。
例如,更新可能如下所示:
UPDATE targetfile as u
SET ( flda,fldb,fldc ) =
(SELECT a, b, c
FROM inpdata as i
WHERE u.keyfld = i.keyfld
)
WHERE u.keyfld IN
(SELECT i.keyfld
FROM inpdata as i
);
然后
INSERT INTO targetfile
(keyfld, flda, fldb, fldc)
SELECT keyfld, a, b, c
FROM inpdata as i
WHERE i.keyfld NOT IN
(SELECT t.keyfld
FROM targetfile as t
);
要么
INSERT INTO targetfile
(keyfld, flda, fldb, fldc)
SELECT keyfld, a, b, c
FROM inpdata as i
LEFT EXCEPTION JOIN targetfile as t
ON i.keyfld = t.keyfld;
以上是关于Db2 iseries INSERT ON DUPLICATE KEY的主要内容,如果未能解决你的问题,请参考以下文章
通过 Data Studio 为 DB2 for IBM i (iSeries) 构建存储过程失败
IBM iSeries / AS 400中的DB2连接字符串