SQL更新列基于另一个表

时间:2015-08-04 05:53:27

标签: sql sql-server sql-server-2008 tsql sql-server-2008-r2

有没有办法可以根据另一个表的列更新表格?

例如,如果我使用AdventureWorks2008R2.Production.Product表,则有500种产品,每种产品的ID为ProductID,产品编号为ProductNumber

因此,如果我有另一个名为AdventureWorks2008R2.Production.ProductRev的表,并且在该表中,ProductNumber列只有31个产品编号。我可以更新AdventureWorks2008R2.Production.Product以删除匹配的产品编号吗?

所以来自ProductRev表的AK-5381将用于删除ProductNumber表中的AK-5381 AdventureWorks2008R2.Production.Product

enter image description here

enter image description here

结果将是:

enter image description here

2 个答案:

答案 0 :(得分:1)

试试这个......

delete from p 
from [AdventureWorks2008R2].[Production].[Product] as p
inner join  [AdventureWorks2008R2].[Production].[ProductRev] as  pr on 
pr.ProductNumber=p.ProductNumber

答案 1 :(得分:1)

我相信这正是您要找的...它会根据成功Product删除JOIN表中的行,ProductRev表基于{ProductNumber表每个表格中都有1}}。

DELETE P
    FROM AdventureWorks2008R2.Production.Product P
JOIN AdventureWorks2008R2.Production.ProductRev PR
    ON P.ProductNumber = PR.ProductNumber