0

我正在使用 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'.

如果我更改T2table2in here: (select count(T2.id) from table2),则在创建过程时会出现另一个错误:An aggregate may not appear in the set list of an UPDATE statement.

我的具体尝试是怎么回事,有没有办法在一个查询中更新所有 3 行?

4

1 回答 1

0

尝试这个

Update T1
Set sum = sum +
    (   Select Count(*) 
        From T2
        Where T2.ID = T1.ID
    )
于 2013-10-05T13:19:58.733 回答