我正在使用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'.
如果我在此处更改T2
至table2
:(select count(T2.id) from table2)
,我在创建程序时遇到另一个错误:An aggregate may not appear in the set list of an UPDATE statement.
我的具体尝试有什么处理,有没有办法在一个查询中更新所有3行?
答案 0 :(得分:0)
试试这个
Update T1
Set sum = sum +
( Select Count(*)
From T2
Where T2.ID = T1.ID
)