我想使用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语句中使用的插入列列表不能包含多部分标识符。改为使用单个部件标识符。
我不确定如何删除多部分标识符并仍然有这项工作...因为我需要定义我们正在查找的数据库。
关于如何解决这个问题的任何想法?任何帮助将不胜感激
答案 0 :(得分:2)
这对我有用:
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,因此您无法在那里使用它。无需多部件标识符。