2

我想使用 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
MERGE 语句中使用的插入列列表不能包含多部分标识符。请改用单部分标识符。

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

关于如何解决这个问题的任何想法?任何帮助,将不胜感激

4

1 回答 1

3

这对我有用:

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);

我认为问题是额外的E.——SELECT你定义了 E,所以你不能在那里使用它。不需要多部分标识符。

于 2013-11-12T18:53:29.683 回答