2012-03-13 31 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

更新語句只能更新一個表/視圖。不錯,儘管嘗試!