Sql 如何从差异数据库中从一个表插入到另一个表

Sql 如何从差异数据库中从一个表插入到另一个表,sql,sql-server,Sql,Sql Server,这是我的桌子 表A数据库中的供应商 ID(AUTONUMBER) | SupplierCode(Unique) | SupplierName 001 supp001 TestA 002 supp002 TestB 003 supp003 TestC 数据库B中的表供应商 ID(AUTONUMBER) | SupplierCode

这是我的桌子

表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中的表Suppliers 由于供应商代码存在,它将跳过Supplier001和Supplier003

有人能帮我解决这个问题吗


注意:不是MySQL的SQL Server查询也可以作为答案

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

表引用应该是正确的,但我无法验证。如果这是正确的全名,您可能希望转到databasea.dbo.suppliers

假设两个数据库位于同一台服务器上,并且两个表都是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

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

我通常不建议在我通常使用联接的语句中使用In或not In,因此请尝试以下方法

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

为什么要写一张便条说不是mysql,而是标记问题mysql?数据库是否在同一台服务器上?认为您的解决方案将插入数据库B..suppliers select*from Database A..suppliers中的id不在select id from Database B..suppliers SQL和MySQL的属性几乎相同,但有些脚本不同,因此我更喜欢SQL查询脚本中的任何帮助编辑您的标记以反映MSSQL而不是MySQL;数据库是否在同一MSSQL服务器实例上?是的,同一MSSQL服务器实例上的数据库有效对象名称“databaseB.suppliers”有两个句点。表名由4部分组成,server.schema.owner.tablename您要指定schema.owner.tablename。要么是databaseb..suppliers要么是databaseb.dbo.suppliers首先我想让你知道数据库不是我创建的,这是我们公司的供应商提供的,所以我试着像我的问题那样做,我得到了这个错误,表“DatabaseA.dbo.Suppliers”中的标识列的显式值只能在使用列列表并且启用了identity_INSERT时指定。阿_hau将其放在注释中…您需要禁用identity INSERT如何禁用?我不经常使用mssql