如何从一个表插入到不同数据库的另一个表

时间:2014-09-04 00:32:01

标签: sql sql-server

这是我的表

数据库A中的表供应商

ID(AUTONUMBER) | SupplierCode(Unique) | SupplierName
001              supp001                TestA
002              supp002                TestB
003              supp003                TestC

数据库B中的表供应商

ID(AUTONUMBER) | SupplierCode(Unique) | SupplierName
001              supp001                TestA
003              supp003                TestC

在这种情况下,我想将supp002插入数据库B中的表供应商 并且它将跳过supp001和supp003,因为SUPPLIERCODE存在

任何人都可以帮助我解决这个问题

注意:SQL Server查询不是MySQL

3 个答案:

答案 0 :(得分:0)

也可以作为答案

insert into databaseB..suppliers 
Select * from databaseA..suppliers where id not in (select id from databaseB..suppliers)

表格引用应该是正确的,但我无法验证。如果这是正确的全名

,您可能想要使用databasea.dbo.suppliers

答案 1 :(得分:0)

假设两个数据库位于同一服务器上,并且两个表都是“dbo”模式的一部分,则只能将A表中那些尚未存在于B中的记录插入到B表中,可以这样处理:

INSERT INTO DatabaseB.dbo.Suppliers
SELECT ID,SupplierCode, SupplierName FROM  DatabaseA.dbo.Suppliers
WHERE SupplierCode NOT IN
(SELECT SupplierCode FROM  DatabaseB.dbo.Suppliers)

如果A和B中的表属于不同的模式,请将上面的“dbo”替换为相应的模式名称。

如果数据库驻留在不同的服务器上,本文讨论创建链接服务器可能很有用,但语法类似。 Create Linked Servers

答案 2 :(得分:0)

我通常不建议在语句中使用In或Not,我通常使用连接,所以试试这个

Insert into DatabaseB 
    (SupplierCode, 
    SupplierName)
Select SupplierCode,
       SupplierName
  From DatabaseA A
  Left join DatabaseB B
  On A.SupplierCode = B.SupplierCode
  Where B.SupplierCode IS NULL