sql - 合并以更新所有目标表列

标签 sql sql-server

我在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节点,并将其(以及因此的列名)拖到查询窗口中来开始所有键入操作:

enter image description here

enter image description here


因此,现在您无需进行太多键入操作,只需进行一系列操作以及复制和粘贴即可。
而且出于各种原因(包括仅涉及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/

相关文章:

SQL简单查询问题

php - 如何在 2 个实体之间使用 QueryBuilder 在 Symfony Doctrine 中没有关系表的情况下加入

java - 在jsp中捕获SQL Raiserror

sql-server - 重命名列或追加列?就是那个问题

mysql - 从 UNIX_TIMESTAMP 中减去一周

php - 转义表名 MySQL

mysql - 嵌套数据使用什么表结构?

sql - 尝试使用 WITH 创建 View 时出现问题

php - IIS7 服务器上的 Web 服务用于 Apache 服务器上的网站

sql - 获取层次结构表中子项的根父项