将列信息从一个 table 从非唯一标识符导入到另一个

Import Column info from one table to another from non-unique identifier

我有两个表,Table A 保存我想传递的信息,Table B 我想接受信息。 (19 列 varchar)。

它们唯一共同的列是 "ItemTitle"(别问,我没有创建它)所以我尝试根据 ItemTitle 匹配导入。我的问题是在 Table A 中,ItemTitle 是唯一的,但在 Table B 中可能有很多同名的。

我想将列信息导入所有包含相同 ItemTitle 的行,而不仅仅是它找到的第一行。

这可以吗?

这是我尝试过的方法:(我只使用了 1 列的集合,看看它是否有效) 它没有。错误消息 4104,级别 16,状态 1,第 29 行 无法绑定多部分标识符 "prodData.ItemTitle"。

SELECT prodData.[prodID]
      ,prodData.[Item]
      ,prodData.[ParentItem]
      ,prodData.[ItemTitle]
      ,prodData.[15]
      ,prodData.[16]
      ,prodData.[17]
      ,prodData.[18]
      ,prodData.[19]
      ,prodData.[20]
      ,prodData.[21]
      ,prodData.[22]
      ,prodData.[23]
      ,prodData.[24]
      ,prodData.[25]
      ,prodData.[26]
      ,prodData.[27]
      ,prodData.[28]
      ,prodData.[29]
      ,prodData.[30]
      ,prodData.[31]
      ,prodData.[32]
      ,prodData.[33]
    From [database].[dbo].[tbl_ProductInfoDump] as prodData
    Inner Join [database].[dbo].[tbl_ProductFilterDump] as filterData 
    on filterData.ItemTitle = prodData.ItemTitle


Update [database].[dbo].[tbl_ProductInfoDump] set [15] = (Select [15] from [database].[dbo].[tbl_ProductFilterDump] as filterData where filterData.ItemTitle = prodData.ItemTitle)

您必须使用带连接的更新,或从 select 更新(无论您想要命名)。

想法是将目标 table (B) 与起点 table (A) 连接起来,并使 B 的每一行更新为连接后的列的值一行.

你可以在这里找到很好的解释:SQL SERVER – UPDATE From SELECT Statement – Using JOIN in UPDATE Statement – Multiple Tables in Update Statement。查询如下所示:

UPDATE B
SET
   Col1 = A.Col1,
   Col2 = A.Col2
FROM B
INNER JOIN A ON A.Title = B.Title

当然,您可以包含额外的过滤器(where子句)来限制更新的行。