通过根据匹配字段合并两个现有的 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,或者指定您只需要具有最小或最高标识符列值的记录(如果有的话)。
我正在尝试使用两个现有 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,或者指定您只需要具有最小或最高标识符列值的记录(如果有的话)。