假设数据库中有一些记录如下:
Id v1 v2 v3
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
假设我的新记录如下:
Id v1 v2 v3
1 1 2 1
5 5 5 5
现在,我想以这种方式插入我的新记录:
1.检查数据库中是否存在Id;
2.如果不存在,直接插入记录;
3.如果存在,检测记录是否与新记录相同。如果不是,则仅更新更改的值。
由于我的真实数据非常庞大并且包含50多个变量而且我想快速插入,我想问一下是否有任何通用的方法来检测相同Id的新记录是否与实体中的现有记录不同框架。我不能做50 + if
来查看哪些变量已被更改。
请确保您的解决方案适用于大型数据集,谢谢。
答案 0 :(得分:0)
您可以使用MERGE
执行“upsert”操作:
MERGE INTO #t AS TGT
USING ( VALUES
(1,1,2,1),
(5,5,5,5) ) AS SRC (Id, v1, v2, v3)
ON TGT.Id = SRC.Id
WHEN MATCHED THEN
UPDATE SET TGT.v1 = SRC.v1,
TGT.v2 = SRC.v2,
TGT.v3 = SRC.v3
WHEN NOT MATCHED BY TARGET THEN
INSERT (Id, v1, v2, v3)
VALUES (SRC.Id,
SRC.v1,
SRC.v2,
SRC.v3);