如何使用另一个表上的聚合查询更新一个表中的多个行

时间:2011-03-07 20:35:25

标签: sql

我有SQL更新查询问题。我希望能够使用针对另一个表的查询结果更新一个表。这是一个简单的例子来展示我想做的事情。

我有两张桌子:

TABLE1                      

ID     COUNT                                 
1       0         
2       0
3       0

Table2

ID
1
1
1
2


select id,count(*) from table2 group by id;

ID    COUNT
1       3
2       1

我可以使用以下语法一次更新一行:

update table1 set count=(select count(*) from table2 where id=1 group by id) where id=1;

我想要的是能够用一个单独的sql语句更新所有行,以便结果如下:

TABLE1                      

ID     COUNT                                 
1       3         
2       1
3       0

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

我认为这可能适合你:

update table1 
set count=
   (select count(*) 
    from table2 
    where table2.id=table1.id) 

答案 1 :(得分:-2)

如果您使用的是SQL Server,我会尝试使用游标http://msdn.microsoft.com/en-us/library/ms180169.aspx