将列信息从一个 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
子句)来限制更新的行。
我有两个表,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
子句)来限制更新的行。