【发布时间】:2017-07-03 00:03:02
【问题描述】:
目前我们有一个用于更新配置设置的 SQL 脚本。
MERGE [dbo].[ConfigurationSetting] AS Target
USING (SELECT * FROM (VALUES
-- <Snip> Hard-coded rows.
) AS s([Id], [Key], [DisplayName], [Value])) AS Source
ON Target.[Id] = Source.[Id]
WHEN MATCHED THEN
UPDATE SET
[Key] = Source.[Key],
[DisplayName] = Source.[DisplayName]
-- Preserve existing [Value]
WHEN NOT MATCHED BY TARGET THEN
INSERT ([Id], [Key], [DisplayName], [Value])
VALUES (Source.[Id], Source.[Key], Source.[DisplayName], Source.[Value])
WHEN NOT MATCHED BY SOURCE THEN
DELETE
;
这很好用,但只是为了简单起见,是否有一种语法可以将INSERT ... VALUES ... 子句简化为类似于INSERT VALUES Source.*
【问题讨论】:
标签: sql-server merge implicit-conversion