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

Sql server 2012 通过基于匹配字段合并两个现有表来创建新表,sql-server-2012,Sql Server 2012,我试图使用两个现有表中的列创建一个新表,但它的行为与我预期的不同 表A有91255063条记录,表B有2372294条记录。这两个表都有一个名为link_id的公共字段。link_id在这两个表中都不是唯一的,并且不会始终存在于表B中 我要寻找的最终结果是一个包含91255063条记录的新表,基本上所有表a都包含表B中具有匹配链接id的记录的任何附加数据。我原以为外部联接可以实现以下功能: use database1 SELECT a.* ,b.[AdditionalData1]

我试图使用两个现有表中的列创建一个新表,但它的行为与我预期的不同

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

我要寻找的最终结果是一个包含91255063条记录的新表,基本上所有表a都包含表B中具有匹配链接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的my row total现在有98011015行。我在这里没有使用正确的连接方法吗

最有可能的情况是,右侧有重复的链接ID,因此对于表1中的许多行,表2中有多行。您可以尝试在SELECT中使用DISTINCT,或者指定只需要标识符列值最小或最高的记录(如果有)。

感谢您的快速响应。我没有意识到使用左连接时会从右侧添加额外的行。我将尝试使用“独特选择”选项,并希望它能奏效。:)如果你要否决一个问题,至少要解释一下你的理由。如果新的程序员不知道对他们的期望是什么,他们如何改进他们的问题?