【发布时间】:2018-04-30 07:18:49
【问题描述】:
当不匹配的情况下,想在MERGE中添加一个递增的数字。
它只允许编写插入语句,我也尝试使用 MAX() 函数设置值,但将相同的数字添加到所有记录。
期待什么
MERGE #targetTable AS [target]
USING #sourceTable AS [source] ON [target].key = [source].key
WHEN MATCHED
UPDATE ROWS
WHEN NOT MATCHED THEN
INSERT (id, Name)
VALUES ([incremented_id], source.Name);
注意:表中已经有一些记录。
任何帮助将不胜感激
【问题讨论】:
-
如果您的目的地有 id 列作为 Identity (1,1),它将插入自动递增 id。并且您不需要将其包含在合并语句中
-
该表没有该 id 列它只是一个普通的 int。
-
你能做类似的事情吗:
VALUES (ROW_NUMBER() OVER (order by source.name) + (SELECT max(id) FROM target), source.Name);
标签: sql-server merge