在mysql的更新中执行count()?

时间:2011-06-16 18:04:34

标签: mysql database database-design count

是否可以执行如下查询?如果可能的话,我想用这个代替存储过程。

例如,有两个表

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

或类似的东西......基本上对表进行计数并使用该值来更新另一个表?

我甚至不知道这个问题是否有意义。如果需要,请随时称我为白痴。

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

2 个答案:

答案 0 :(得分:3)

当然,你的语法基本上是正确的:

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

这称为相关子查询。它是相关的,因为您在子查询中引用外部查询中的表。

答案 1 :(得分:1)

您要查找的是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首先发布了他的解决方案。