我有一个 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 ...
换句话说,如果 (Condition1) AND (Condition2) 不存在,则将记录添加到表中。
如果有帮助,各种“案例”要么都需要更新,要么都需要插入。
我正在使用 SQL Server 2012。
提前致谢。
更新
我已经开发了如下代码,它仍在进行中。幸运的是,我只需检查 Condition1 和 Condition2 的一种组合,即可查看是否需要更新或插入所有记录:
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')