2013-10-05 121 views
0

我使用SQL Server 2008 Management Studio中從另一個表添加的記錄數,這裏是我的問題SQL:更新表,

我有一個表1,其中包含列ID(如主鍵,所有它們是不同的),以及Sum的:

ID SUM 
--------  
1 10 
2 5 
3 5 

除此之外我有一個表2,它包含一個列ID(未主鍵此時,可重複自己)和其他列,這是不顯著:

ID .... 
------------  
1 
1 
2 
3 

我在做什麼,正在寫一個過程,它根據每個id在table2中出現的次數來更新table1中的SUM,所以基本上id = 1的總和會增加2,而id = 2 ,3爲每一個

這是我寫的,試圖更新從表1只有一條記錄(然後我會重複每個ID 3次):

update T1 
set T1.sum=T1.sum+ 
(select count(T2.id) from T2) 
from table1 T1 
inner join table2 T2 on T2.id=T.id 
where T1.id=1 
and T2.id=1 

,但我發現執行程序時出錯:Invalid object name 'T2'.

如果在此處將T2更改爲table2(select count(T2.id) from table2),我在創建過程時遇到了另一個錯誤:An aggregate may not appear in the set list of an UPDATE statement.

與我的具體嘗試有什麼關係,有沒有辦法在一個查詢中更新所有3行?

回答

0

試試這個

Update T1 
Set sum = sum + 
    ( Select Count(*) 
     From T2 
     Where T2.ID = T1.ID 
    )