我在2个数据库中有相同的表
-----------------------------------
| table |
-----------------------------------
| ID | col1 | col2 | ... | col(n) |
我需要merge语句来更新具有匹配ID的行,例如:
MERGE [DB1]..[table]
USING [DB2]..[table] ON [DB1]..[table].[ID] = [DB2]..[table].[ID]
WHEN MATCHED THEN
UPDATE SET [DB1]..[table].[*] = [DB1]..[table].[*]
问题是我有30多个列,因此很难逐列设置值。
最佳答案
无法使用通配符指定目标更新列和映射(即使所有列都相同)。您可以通过单击“对象资源管理器”中的Columns
节点,并将其(以及因此的列名)拖到查询窗口中来开始所有键入操作:
因此,现在您无需进行太多键入操作,只需进行一系列操作以及复制和粘贴即可。
而且出于各种原因(包括仅涉及
MERGE
时语法相当繁琐的事实),我也不会为此使用UPDATE
,正如我在上面的评论中提到的那样。 See this post for details。UPDATE trg
SET col1 = src.col1,
col2 = src.col2,
...
FROM DB1.dbo.table AS trg
INNER JOIN DB2.dbo.table AS src
ON trg.ID = src.ID;
关于sql - 合并以更新所有目标表列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21510951/