通过基于匹配字段合并两个现有表来创建新表

时间:2015-01-16 04:45:11

标签: sql-server-2012

我正在尝试使用两个现有表中的列创建一个新表,并且它的行为不符合我的预期。

表A有91255063条记录,表B有2372294条记录。两个表都有一个名为link_id的公共字段。 Link_id在两个表中都不是唯一的,并且不会总是存在于表B中。

我正在寻找的最终结果是一个包含91255063记录的新表,基本上所有表A都包含来自表B的任何附加数据,用于匹配link_id' s的记录。我原以为外连接会按如下方式完成:

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行。我在这里没有使用正确的连接方法吗?

1 个答案:

答案 0 :(得分:0)

很可能右侧有重复的LINK_ID,因此对于Table1中的很多行,Table2中有多个行。您可以尝试在SELECT中使用DISTINCT,或指定只需要具有最小或最高标识符列值的记录(如果有的话)。