2013-10-05 58 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 
    )