sql - 使用 MERGE INTO 合并来自不同数据库的 2 个表

标签 sql sql-server merge

我想使用 MERGE 将不同数据库中的 2 个表合并到一个表中。两个数据库位于同一服务器上。

目前,我可以执行以下操作:

USE Northwind2

SELECT a.CategoryID 
FROM Northwind.dbo.Categories a 
INNER JOIN Northwind2.dbo.Categories b ON a.CategoryID = b.CategoryID

但是,我需要将结果合并到一张表中。我想我可以做这样的事情:

USE Northwind2

MERGE INTO Categories B
USING (
  SELECT E.CategoryID
  FROM Northwind.dbo.Categories) E
ON (B.CategoryID = E.CategoryID)
WHEN MATCHED THEN
  //update the table
WHEN NOT MATCHED THEN
  //insert into the table

这将返回一个错误,内容如下:

Msg 10739, Level 15, State 1, Line 10
The insert column list used in the MERGE statement cannot contain multi-part identifiers. Use single part identifiers instead.

我不确定如何删除多部分标识符并仍然进行这项工作...因为我需要定义我们正在查找的数据库。

关于如何解决这个问题有什么想法吗?任何帮助将不胜感激

最佳答案

这对我有用:

MERGE INTO db1.dbo.TempCat B
USING (
  SELECT CategoryID
  FROM db2.dbo.TempCat) E
ON (B.CategoryID = E.CategoryID)
WHEN MATCHED THEN
  UPDATE SET CategoryID = E.CategoryID
WHEN NOT MATCHED THEN
  INSERT (CategoryID) VALUES (E.CategoryID);

我认为问题在于 SELECT 之后的额外 E. - 您正在定义 E,因此您不能在那里使用它。不需要多部分标识符。

关于sql - 使用 MERGE INTO 合并来自不同数据库的 2 个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19936545/

相关文章:

java - 如何在后台线程中正确执行SQL查询?

sql - 基于一列中的值跨组更改另一列中的值

sql - SQL Server 2008 中数据库的最大大小

java - 如何将两个maven webapp合并到一个项目中

python - 使用 Pandas 合并具有不同行数的 2 个数据框

TFS-SDK:合并不起作用

mysql - 通过windows客户端将数据加载到linux托管的mysql中

python - 有日期时间±无穷大吗?

sql-server - 具有 UNIQUE 索引的列中存在多个 NULL 值

sql-server - SQL 在 where 子句中使用 CASE