假设我有一个包含以下数据的表。
Id Value
1 | A
2 | B
3 | C
我需要将此表中的值与一组值同步。我想删除所有不在我的集合中的行,添加那些行并保留匹配的行。
鉴于此值集合:
C,D,E
操作后,我希望该表包含:
Id Value
3 | C
4 | D
5 | E
我知道大多数需要多个查询的明显解决方案。我正在寻找的是更有效的可能解决方案。我可以在这里以某种方式使用 MERGE 语句吗?
编辑- 集合值在 C# 集合 (List<string>) 中,我使用 .NET 中的标准 SqlConnection/SqlCommand 来执行查询。
这是我认为要注意删除值的事情。但这可能会令人不悦,因为我必须做一些字符串连接才能创建它。
DELETE FROM [MyTable]
WHERE [Value] NOT IN ('C','D','E')
但随后要添加值,似乎我必须为集合中的每个值创建多个 IF NOT EXISTS THEN INSERT 查询语句。