2016-12-05 65 views
1

我有兩個數據庫,testFromtestTo。他們的目的是從testFrom中取出選擇列的值,並覆蓋testTo中的那些相同列。兩個數據庫都處理同名的表格dbo.People。這兩個數據庫沒有相同的記錄數,因此傳輸不會爲1:1。因此,我正在處理一個查詢,該查詢更新存在的行的值,併爲那些不存在的行插入剩餘的數據。當它們不爲空時更新列,當它們爲空時插入

目前我的更新工作,但插入將使用空值而不是從testFrom的值添加新行。我不確定我哪裏錯了,是否可以成爲我插入的加入聲明?

UPDATE to_p 
    SET to_p.DottedID = from_p.DottedID, to_p.Name = from_p.Name, to_p.Colour = from_p.Colour, to_p.Food = from_p.Food 
    FROM testFrom.dbo.people to_p left join testTo.dbo.People from_p on to_p.Name = from_p.Name 
    WHERE from_p.Name IS NOT NULL; 
INSERT INTO testTo.dbo.People (to_p.DottedID, to_p.Name, to_p.Colour, to_p.Food) 
    SELECT from_p.DottedID, from_p.Name, from_p.Colour, from_p.Food 
    FROM testFrom.dbo.people to_p left join testTo.dbo.People from_p on to_p.Name = from_p.Name 
    WHERE from_p.Name IS NULL; 

的輸出如下

enter image description here

回答

1

你從錯誤表中選擇列。改變你的INSERT語句像下面

INSERT INTO testTo.dbo.People (DottedID, Name, Colour, Food) 
    SELECT to_p.DottedID, to_p.Name, to_p.Colour, to_p.Food 
    FROM testFrom.dbo.people to_p left join testTo.dbo.People from_p 
    on to_p.Name = from_p.Name 
    WHERE from_p.Name IS NULL; 
+0

它說0行受到影響時,我建議你更改後執行 – BlueBarren

+0

@BlueBarren,是聽錯了。如果有幫助,請參閱編輯答案。 – Rahul

+0

是的,或多或少的作品謝謝。現在,我只是每個舊的條目仍然在那裏,雖然 – BlueBarren

相關問題