sql:更新表,添加另一个表中的记录数

时间:2013-10-05 10:19:38

标签: sql sql-server-2008 count addition

我正在使用SQL Server 2008 Management Studio,这是我的问题

我有一个table1,它包含列ID(作为主键,所有这些都是不同的)和Sum:

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

除此之外,我有一个table2,它包含一个列ID(这次不是主键,可能会重复)和其他不重要的列:

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

我正在尝试做的是编写一个过程,该过程根据table2中每个id出现的次数更新table1中的SUM,因此id = 1的基本总和将增加2,并且对于id = 2,3,每一个

这就是我写的,试图只更新table1中的一条记录(然后我会为每个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'.

如果我在此处更改T2table2(select count(T2.id) from table2),我在创建程序时遇到另一个错误:An aggregate may not appear in the set list of an UPDATE statement.

我的具体尝试有什么处理,有没有办法在一个查询中更新所有3行?

1 个答案:

答案 0 :(得分:0)

试试这个

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