通过根据匹配字段合并两个现有的 table 来创建新的 table

Create new table by merging two existing tables based on matching field

我正在尝试使用两个现有 table 中的列创建一个新的 table,但它的行为与我预期的不同。

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

我正在寻找的最终结果是一个新的 table,其中包含 91255063 条记录,基本上是所有 Table A 以及来自 table 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

这在查看结果数据时似乎有效,但是我新创建的 table COMBINEDTABLE 的行总数现在有 98011015 行。我在这里没有使用正确的加入方法吗?

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