MySQl - 通过计算其他表中的数据来更新字段

时间:2010-03-31 07:31:23

标签: mysql sql-update

有两张桌子。一个是用户信息“用户”,一个是评论信息“评论”。

我需要在users表中创建新字段“comments”,其中包含该用户的注释数。表“comments”具有“user”字段,其中包含该评论的用户ID。

到目前为止,每个用户计算评论数量的最佳方法是什么?

使用php,你应该编写脚本来选择每个用户并计算他的评论数量,然后更新“评论”字段。这对我来说并不难,但很无聊。

是否可以在没有php的情况下进行,仅在MySQL中进行?

3 个答案:

答案 0 :(得分:2)

UPDATE TABLE users SET CommentCount = (SELECT COUNT(*) FROM comments WHERE AuthorUserId = users.id)

答案 1 :(得分:1)

为什么要将它存储在那里? 为什么不直接显示它的组合查询?

select users.name, count(comments.id) as comment_count
from users
join comments on users.id=comments.user_id
group by users.id

如果你想按自己的方式去做,那就包括

update users set comment=comment+1 where id=$user_id

进入存储评论的脚本。

update users set comment=comment-1 where id=$user_id

进入用户可以删除其评论的地方。否则,当用户添加新的通信并且您尚未运行脚本时,您的数据可能会不同步。

答案 2 :(得分:1)

是的,有可能。 这称为table joining。 您不会向users表添加其他字段,而是添加到resulting表。

SELECT users.*, count(comments.id) as num_comments 
FROM users,comments 
WHERE comments.cid=users.id 
GROUP BY users.id

这样的查询是relational databases发明的。不要将其还原为纯文本文件状态。这样做的原因有很多 http://en.wikipedia.org/wiki/Database_normalization< - 要阅读的好文字