在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'
这就是所谓的相关子查询。它是相关的,因为您引用了子查询中外部查询中的表。
您正在寻找的是
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首先张贴他的解决方案。
不完全...我想计算一个表并使用该值来更新同一个查询中的另一个表。 – 2011-06-16 18:08:58
哦,是的,我完全误解了你的问题。所以你说你想在另一个查询中使用查询的结果!你能做两个查询并存储第一个结果吗? – hughes 2011-06-16 18:20:01
非常感谢!这很有意义。感谢您的反馈。 – 2011-06-24 00:03:26