【发布时间】:2011-01-29 14:03:17
【问题描述】:
我正在尝试对表进行单行插入/更新,但所有示例都是针对集合的。
谁能修正我的语法:
MERGE member_topic ON mt_member = 0 AND mt_topic = 110
WHEN MATCHED THEN UPDATE SET mt_notes = 'test'
WHEN NOT MATCHED THEN INSERT (mt_member, mt_topic, mt_notes) VALUES (0, 110, 'test')
每个 marc_s 的解决方案是将单行转换为子查询 - 这让我认为 MERGE 命令并不是真正适用于单行 upserts。
MERGE member_topic
USING (SELECT 0 mt_member, 110 mt_topic) as source
ON member_topic.mt_member = source.mt_member AND member_topic.mt_topic = source.mt_topic
WHEN MATCHED THEN UPDATE SET mt_notes = 'test'
WHEN NOT MATCHED THEN INSERT (mt_member, mt_topic, mt_notes) VALUES (0, 110, 'test');
【问题讨论】:
-
嗯,在我的浏览器中,这些行的间距太近了,以至于一些下划线没有显示。
标签: sql-server merge upsert