用其他字段的COUNT更新列是SQL?

嗨,大家好我有以下表格设置:

Articles:
ID | TITLE | CONTENT | USER | NUM_COMMENTS

COMMENTS
ID | ARTICLE_ID | TEXT

我需要一个sql语句来更新文章表的NUM_Comments字段,并根据对这篇文章所做的评论数量进行更新,例如:

update articles a, comments f 
set a.num_comments =  COUNT(f.`id`)
where f.article_id = a.id

上面的SQL不起作用,我得到一个无效的使用fo组功能错误。 我在这里使用MySQL。


您不能在更新声明中加入连接。 它应该是

update articles
set num_comments =
(select count (*) from comments
where comments.article_id = articles.id)

这将更新整个文章表,这可能不是你想要的。 如果您打算只更新一篇文章,那么在子查询之后添加一个'where'子句。


这应该工作。

UPDATE articles a SET num_comments = 
(SELECT COUNT(*) FROM comments c WHERE c.article_id = a.id)

但是,在发表评论时,我宁愿只更新一条记录:

UPDATE articles a SET num_comments = 
(SELECT COUNT(*) FROM comments c WHERE c.article_id = 100) WHERE a.id = 100

要单独根据列数进行更新,您可以执行如下操作:

update articles, (select count (*) from comments where comments.article_id = articles.id) as newtotals set articles.num_comments = newtotals.count;

或者......如果您遇到需要滚动计数的情况:

update articles, (select (count (*)) + (articles.num_comments) as count from comments join articles on comments.article_id = articles.id group by articles.id) as newtotals set articles.num_comments = newtotals.count;

链接地址: http://www.djcxy.com/p/94667.html

上一篇: Update a column with a COUNT of other fields is SQL?

下一篇: Syntax error on simple update query