在 TSQL 中使用"案例"的简单"合并到"查询的格式



>我有一个 TSQL UPDATE 查询,如下所示:

UPDATE Table
SET Value = CASE
    WHEN (Condition1 = 'A') AND (Condition2 = '1') THEN 'BLAH-1'
    WHEN (Condition1 = 'B') AND (Condition2 = '1') THEN 'BLAH-2'
END
WHERE (Condition1 IN ('A','B')) AND (Condition2 IN ('1'))

如果可能的话,有人可以将上述格式显示为"合并到"查询吗?

MERGE INTO Table
USING ...
WHEN MATCHED THEN UPDATE SET ...
WHEN NOT MATCHED THEN INSERT ... VALUES ...

换句话说,如果 (条件 1) 和 (条件 2) 不存在,则将记录添加到表中。

如果有帮助,各种"案例"要么都需要更新,要么全部插入。

我正在使用SQL Server 2012。

提前谢谢。

更新

我已经开发了如下代码,它仍在进行中。幸运的是,我只需要检查条件 1 和条件 2 的一个组合,看看是否需要更新或插入所有记录:

IF EXISTS (SELECT * FROM Table WHERE (Condition1 = 'A') AND (Condition2 = '1')) 
UPDATE Table 
SET Value = CASE
WHEN (Condition1 = 'A') AND (Condition2 = '1') THEN 'BLAH-1'
WHEN (Condition1 = 'B') AND (Condition2 = '1') THEN 'BLAH-2'
END
WHERE (Condition1 IN ('A','B')) AND (Condition2 IN ('1'))
ELSE
INSERT INTO Table (Condition1, Condition2)
VALUES ('A','1'),('B','1')

我认为合并不一定以您所描述的方式使用,如果您让它工作,那将是一些难以理解的代码。合并旨在比较表之间定义的列关系,并根据这些关系更新或插入到表中。我认为你最好只使用几个IF...插入。。。还。。。更新。。。语句。对于您要完成的任务,阅读起来同样快速,更容易。

最新更新