2011-03-07 26 views
1

我有SQL更新查询问题。我希望能够使用针对另一个表的查询结果来更新一个表。这里有一个简单的例子来展示我想要做什么。如何使用另一个表上的聚合查询更新一个表中的多行

我有两个表:

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

我想是能够与一个单一的更新所有行:

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 

我可以使用这个语法在同一时间更新一行sql语句,结果如下:

TABLE1      

ID  COUNT         
1  3   
2  1 
3  0 

任何想法?

+0

的数据库系统,您使用的?我们可以谈论SQL标准,但从实际意义上来说,这对你并没有多大帮助。 – eksortso 2011-03-07 20:38:53

+2

您使用的是什么RDBMS? – 2011-03-07 20:39:08

回答

5

我认为这可能为你工作:

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

就是这样!!!!!非常感谢!你摇滚! – 2011-03-07 20:58:15

+0

太好了。请标记为已接受。 - 谢谢 – 2011-03-07 21:00:59

-2

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

+1

-1用于提示游标! – JNK 2011-03-07 21:01:46

+0

绝对不是。 SQL Server中的服务器端游标极其缓慢。除非没有其他选择,否则不要使用它们。 – eksortso 2011-03-07 21:37:21

+1

啊,谢谢你解释downvote。我会记住这一点。 – Tim 2011-03-07 21:41:55

相关问题