第一个表我想将Product.ProductName
列移动到名为Inventory.ProductName
的第二个表中,但删除所有重复的条目。我可以这样做,但当我将这些不同的值插入Inventory.ProductName
时,它会为它们创建行,而不是将它们与正确的ProductID
相关联。无法绕过这一个。这是我尝试过的。
insert into dbo.Inventory (ProductName)
select distinct Product.ProductName
from dbo.Product
inner join dbo.Inventory on (Product.Name = Inventory.ProductID)
答案 0 :(得分:1)
您正在寻找的粗略语法是:
UPDATE dbo.Inventory
SET ProductName = Product.ProductName
FROM
dbo.Inventory
INNER JOIN
dbo.Product ON
Inventory.ProductID = Product.Name
这会将Inventory
中的产品名称设置为Product
中的产品名称。请注意,如果Product.ProductName
存在多个版本的Product.Name
,则会出现问题。
答案 1 :(得分:1)
您应该使用合并声明:
MERGE Inventory AS target
USING (SELECT Name, ProductName FROM Product) AS source (ProductID, ProductName)
ON (target.ProductID = source.ProductID)
WHEN MATCHED
THEN UPDATE SET Name = source.ProductName
WHEN NOT MATCHED
THEN INSERT (ProductID, Name)
VALUES (source.ProductID, source.ProductName);
您可以在此处找到更多信息:https://msdn.microsoft.com/es-es/library/bb510625(v=sql.120).aspx