我正在使用 SQL Server 2008 Management Studio,这是我的问题
我有一个 table1,其中包含列 ID(作为主键,它们都是不同的)和 Sum:
ID SUM
--------
1 10
2 5
3 5
除此之外,我还有一个 table2,其中包含一个列 ID(这次不是主键,可能会重复)和其他不重要的列:
ID ....
------------
1
1
2
3
我正在尝试做的是编写一个程序,它根据每个 id 在 table2 中出现的次数更新 table1 的 SUM,所以基本上 id=1 的 sum 将增加 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
in here: (select count(T2.id) from table2)
,则在创建过程时会出现另一个错误:An aggregate may not appear in the set list of an UPDATE statement.
我的具体尝试是怎么回事,有没有办法在一个查询中更新所有 3 行?