2015-01-16 77 views
-1

我正嘗試使用來自兩個現有表的列創建新表,並且它不像我期望的那樣工作。通過基於匹配字段合併兩個現有表來創建新表

表A有91255063條記錄,表B有2372294條記錄。兩個表都有一個名爲link_id的公共字段。 Link_id在任一表中都不是唯一的,並且在表B中不總是存在。

我正在查找的最終結果是一個帶有91255063記錄的新表,基本上所有表A都具有來自表B的任何附加數據與匹配的link_id的。我原以爲外部聯接會做到這一點,如下所示:

use database1 
SELECT a.* 
    ,b.[AdditionalData1] 
    ,b.[AdditionalData2] 
    ,b.[AdditionalData3]  
    into dbo.COMBINEDTABLE 
    FROM Table1 a 
    left outer join Table2 b 
    ON a.LINK_ID = b.LINK_ID 

這似乎在所得到的數據看時,我卻行總計爲新創建的表COMBINEDTABLE現在有98011015行工作。我在這裏沒有使用正確的連接方法嗎?

+0

如果你打算爲一個問題投票,這是一個很好的形式,至少可以解釋你的推理。如果新編程人員不知道他們的期望,他們如何改進他們的問題? – pbaldridge

回答

0

很有可能您的右側有重複的LINK_ID,因此對於Table1中的相當多行,表2中有多個行。您可以嘗試在SELECT中使用DISTINCT,或者指定僅需要具有最小或最高標識符列值(如果有)的記錄。

+0

感謝您的快速響應。我沒有意識到在使用左連接時它會從右側添加額外的行。我會嘗試不同的選擇選項,並希望這樣做。 :) – pbaldridge

相關問題