将表 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
第一个 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