使用COUNT个其他字段更新列是SQL吗?

Ali*_*Ali 20 mysql sql mysql-error-1111

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

Articles:
ID | TITLE | CONTENT | USER | NUM_COMMENTS

COMMENTS
ID | ARTICLE_ID | TEXT
Run Code Online (Sandbox Code Playgroud)

我需要一个sql语句来更新articles表的NUM_Comments字段,其中包含针对文章的评论计数,例如:

update articles a, comments f 
set a.num_comments =  COUNT(f.`id`)
where f.article_id = a.id
Run Code Online (Sandbox Code Playgroud)

上面的sql不起作用,我得到组函数无效的使用错误.我在这里使用MySQL.

No'*_*man 34

您无法在更新语句中加入联接.它应该是

update articles
set num_comments =
(select count (*) from comments
where comments.article_id = articles.id)
Run Code Online (Sandbox Code Playgroud)

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


Den*_*ovs 8

这应该工作.

UPDATE articles a SET num_comments = 
(SELECT COUNT(*) FROM comments c WHERE c.article_id = a.id)
Run Code Online (Sandbox Code Playgroud)

但是,我希望在评论发布时只更新一条记录:

UPDATE articles a SET num_comments = 
(SELECT COUNT(*) FROM comments c WHERE c.article_id = 100) WHERE a.id = 100
Run Code Online (Sandbox Code Playgroud)