【发布时间】:2014-11-25 10:58:43
【问题描述】:
我需要执行如下所示的查询。 KEY1 和 KEY2 列是不能重复的键。如果有键匹配,我需要执行更新 VAL 而不是插入。如何在 Sql Server 中做到这一点?
INSERT INTO tableA
(
KEY1,
KEY2,
VAL,
) VALUES (
-- Row A
'datakeyA1',
'datakeyA2',
'somevaluetoinsertorupdate'
) , (
-- Row B
'datakeyB1',
'datakeyB2',
'somevaluetoinsertorupdate'
) , (
-- Row C
'datakeyC1',
'datakeyC2',
'somevaluetoinsertorupdate'
);
我尝试使用 MERGE,但查看语法,我不确定它是否支持更新/插入多行。如果有人过去遇到过类似的情况,请您帮忙吗?
编辑:
如果我使用的是 MySql,我会使用:
ON DUPLICATE KEY UPDATE
VAL = VALUES(VAL)
在查询中。
【问题讨论】:
-
MERGE 支持多行。为什么不呢?
-
你在尝试
Bulk insert / Update -
我试过
WHEN NOT MATCHED THEN INSERT (KEY1,KEY2,VAL) VALUES ('datakeyA1', 'datakeyA1', 'datakeyA1'), ('datakeyB1', 'datakeyB1', 'datakeyB1');。这似乎是一个无效的语法。 -
我正在尝试插入多行,但正在研究在现有数据中找到匹配键时如何进行更新而不是插入。 (即与 MySql 中的 ON DUPLICATE KEY UPDATE 功能相同
标签: php sql sql-server