gpt4 book ai didi

php - 在 SQL Server 中插入或更新多行

转载 作者:行者123 更新时间:2023-12-05 03:14:05 26 4
gpt4 key购买 nike

我需要执行如下所示的查询。 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)

在查询中。

最佳答案

您可以使用 table value constructor作为使用 MERGE 使其工作的源表:

MERGE tableA AS t
USING (VALUES
('datakeyA1', 'datakeyA2', 'somevaluetoinsertorupdate'),
('datakeyB1', 'datakeyB2', 'somevaluetoinsertorupdate'),
('datakeyC1', 'datakeyC2', 'somevaluetoinsertorupdate')
) AS s (Key1, Key2, Val)
ON s.Key1 = t.Key1
AND s.Key2 = t.Key2
WHEN MATCHED THEN
UPDATE
SET Val = s.Val
WHEN NOT MATCHED THEN
INSERT (Key1, Key2, Val)
VALUES (s.Key1, s.Key2, s.Val);

关于php - 在 SQL Server 中插入或更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27124839/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com