2014-09-04 113 views
1

這裏是我的表如何從一個表從差異數據庫插入到另一個表

表供應商在數據庫中的數據庫B

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

一個

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

表供應商在這種情況下, ,我想插入supp002到數據庫B的表供應商 它會跳過supp001和supp003,因爲SUPPLIERCODE存在

誰能幫我這個條件

注:SQL Server查詢不是MySQL的

+0

爲什麼把一個紙條,上面寫着不MySQL,但是標籤的問題MySQL的?數據庫是否在同一臺服務器上?思考你的解決方案將被插入到databaseB..suppliers select * from databaseA..suppliers where id not in(select database from databaseB..suppliers) – Twelfth 2014-09-04 00:34:02

+0

查詢SQL和MySQL幾乎是一樣的,但有些腳本是不同的,所以我更喜歡任何幫助SQL查詢腳本 – 2014-09-04 00:35:30

+0

編輯您的標籤以反映MSSQL不是mysql;) – Twelfth 2014-09-04 00:36:16

回答

0

還不如讓一個答案

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

表引用應該是正確的,但我可以」 t驗證。如果這是正確的全名,你可能想要去databasea.dbo.suppliers

+0

無效的對象名'databaseB.suppliers' – 2014-09-04 00:57:20

+0

有兩個時期。表名是4個部分,您要指定schema.owner.tablename的server.schema.owner.tablename。要麼databaseb..suppliers或databaseb.dbo.suppliers – Twelfth 2014-09-04 00:58:20

+0

首先,我想讓你知道一些數據庫不是由我創建的,它來自我們公司的供應商,所以我試圖做像我的問題,我得到這個錯誤 只有使用列列表且IDENTITY_INSERT爲ON時,才能指定表'DatabaseA.dbo.Suppliers'中標識列的顯式值。 – 2014-09-04 01:02:42

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」上面用適當的模式名稱(S )。

如果數據庫駐留在不同的服務器上,這篇討論創建鏈接服務器的文章可能會很有用,但其語法相似。 Create Linked Servers

0

我一般不建議使用在或不在陳述我通常使用連接,以便嘗試這種

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 
相關問題