在mysql的更新中做一个count()?

问题描述:

是否有可能做如下查询?如果可能的话,我想代替存储过程来执行此操作。在mysql的更新中做一个count()?

例如,有两个表

UPDATE items 
SET score='a', count=(SELECT COUNT(votes.id) AS C WHERE votes.uri = items.uri) 
WHERE items.id = 'b' 

或者类似的东西......基本上做一个表上的数量和使用该值来更新另一个表?

我甚至不知道这个问题是否合理。如果需要,请随时给我打个电话。

编辑抱歉,这个问题可能没有意义。我想计算表“B”并使用该值在同一个查询中更新表“A”。

当然,你已经得到了基本的语法正确:

UPDATE items 
SET score= 'a', count = (SELECT COUNT(votes.id) 
    FROM votes WHERE votes.uri = items.uri) 
WHERE items.id = 'b' 

这就是所谓的相关子查询。它是相关的,因为您引用了子查询中外部查询中的表。

+0

非常感谢!这很有意义。感谢您的反馈。 – 2011-06-24 00:03:26

您正在寻找的是 mysql_affected_rows(),您可以在查询后立即调用它以查看更新了多少条记录。

你其实非常接近!这个怎么样:

UPDATE items SET score='a', count = (SELECT COUNT(votes.id) FROM votes WHERE votes.uri = items.uri) WHERE items.id = 'b' 

编辑:Rafe首先张贴他的解决方案。

+0

不完全...我想计算一个表并使用该值来更新同一个查询中的另一个表。 – 2011-06-16 18:08:58

+0

哦,是的,我完全误解了你的问题。所以你说你想在另一个查询中使用查询的结果!你能做两个查询并存储第一个结果吗? – hughes 2011-06-16 18:20:01