2012-03-08 43 views
-1

我試圖通過在表中設置字段的值到另一組字段的總和另一個表的SUM字段:UPDATE一個表中與另一個

UPDATE table1 
SET fieldToUpdate = 
(
    SELECT SUM(fieldToSum) FROM table2 
) 
WHERE thirdField = 'A' 

,但我我沒有任何運氣。我見過很多使用連接的例子,但是我的兩個表格並沒有任何關聯。

感謝

+0

wat errorrügetting? – Teja 2012-03-08 03:57:33

+1

或者你有什麼錯誤?換句話說,「沒有任何運氣」是什麼意思? – 2012-03-08 04:00:55

+0

我沒有收到錯誤消息。它只是不更新​​其先前值(即NULL)的值。 – tptcat 2012-03-08 04:03:34

回答

0

正如我上面的評論說,我試圖與超過了列的寬度值來更新fieldToUpdate。感謝大家的幫助。

1

當你的表是不相關的,它看起來像你已經寫了什麼應該工作。 table1中所有具有fieldToUpdate ='A'的行都將fieldToUpdate的列設置爲table2中所有fieldToSum的總和。也許你可以澄清你的問題,以獲得更好的答案?如,究竟是你所得到的問題還是樣本數據集,結果預計

UPDATE:

基於新的意見,如果以前的值爲NULL,然後做類似fieldToUpdate = [ANY VALUE]會導致無行被返回。您需要使用fieldToUpdate IS NULL。或者,如果你這樣做,你可以保留= ISNULL(fieldToUpdate, 'A') = 'A'

最後,作爲一種調試手段,您可以在更新後檢查@@ROWCOUNT,看它是否更新任何內容(這將確認是否需要IS NULL)。

+0

更新我的答案,以根據您的意見反映可能性 – 2012-03-08 14:30:01

+0

賈斯汀 - 我糾正了我原來的問題。我在最初的問題中引用了錯誤的列名(儘管不是在我的原始代碼中)。我的評論如下是我的問題的最終答案。謝謝你的幫助。 – tptcat 2012-03-09 00:17:18

4

雖然子查詢應該工作,你可以打破它是這樣的:

DECLARE @s INT; 

SELECT @s = SUM(fieldToSum) FROM dbo.table2; 

UPDATE dbo.table1 
SET fieldToUpdate = @s 
WHERE fieldToUpdate = 'A';