2012-03-13 30 views
0
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 Server中的2个表列与1查询?

现在当我做了SQL语法检查时得到“AS”关键字附近

不正确的语法。

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

+3

“UPDATE”,“INSERT”或“DELETE”只能影响* one *表。虽然有些表格允许其他表格用于过滤或定位其他表格中的感兴趣的值,但它不会更改此限制。 – 2012-03-13 15:07:14

回答

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你仍然可以确保操作的“原子性”

0

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