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'子句.
这应该工作.
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)