我想使用 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/