将表 1 中列的不同记录插入到列 table 2 到它们在不同列上匹配的行

Insert distinct records from column in Table1 into column table 2 into row where they match on a different column

第一个 table 我想将 Product.ProductName 列移动到名为 Inventory.ProductName 的第二个 table 中,但删除所有重复的条目。我可以这样做,但是当我将这些不同的值插入 Inventory.ProductName 时,它会为它们创建行,而不是将它们与正确的 ProductID 相关联。无法绕过这个。这是我试过的。

insert into dbo.Inventory (ProductName)
select distinct Product.ProductName
from dbo.Product
inner join dbo.Inventory on (Product.Name = Inventory.ProductID)

您要查找的粗略语法是:

UPDATE dbo.Inventory 
SET ProductName = Product.ProductName
FROM 
    dbo.Inventory 
     INNER JOIN 
    dbo.Product ON 
        Inventory.ProductID = Product.Name

这会将 Inventory 中的产品名称设置为等于 Product 中的产品名称。请注意,如果不同的 Product.Name.

存在多个 Product.ProductName 版本,您将遇到问题

您应该使用合并语句:

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