是否可以执行如下查询?如果可能的话,我想用这个代替存储过程。
例如,有两个表
UPDATE items
SET score='a', count=(SELECT COUNT(votes.id) AS C WHERE votes.uri = items.uri)
WHERE items.id = 'b'
或类似的东西......基本上对表进行计数并使用该值来更新另一个表?
我甚至不知道这个问题是否有意义。如果需要,请随时称我为白痴。
编辑抱歉,这个问题可能没有意义。我想计算表“B”并使用该值来更新同一查询中的表“A”。
答案 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首先发布了他的解决方案。