如何在SQL Server中使用1个查询更新2个表列?

时间:2012-03-13 15:04:35

标签: sql-server

UPDATE Subscription.dbo.RefillSubscriptionHeader AS H
INNER JOIN Subscription.dbo.RefillSubscriptionDetail AS D 
ON D.reSubHeaderId = H.reSubHeaderId 
SET H.isActive2 = '0', D.isActive = '0'
WHERE reItemID = '56'

在上面的查询中,我尝试加入2个表并更新IsActiveIsActive2列。

现在,当我进行SQL语法检查时,我得到了

  

关键字“AS”附近的语法不正确。

如果我无法更新2个表中的2列,最好的办法是更新H表。

2 个答案:

答案 0 :(得分:1)

因为UPDATE语句只会命中一个表,所以最好的选择是

UPDATE H
 SET H.isActive2 = '0'
FROM Subscription.dbo.RefillSubscriptionHeader AS H
INNER JOIN Subscription.dbo.RefillSubscriptionDetail AS D 
ON D.reSubHeaderId = H.reSubHeaderId 
WHERE reItemID = '56'

当然,您可以将两个更新放在一个TRANSACTION中,如果您提供了正确的TRANSACTION ISOLATION LEVEL,您仍然可以确保操作的“原子性”

答案 1 :(得分:0)

更新语句只能更新一个表/视图。不错的尝试!