有两个表:

####comments####     ####news######
#cid#news_id#         #id##comm_num#
#1##1#               #1###2#
#2##1#               #2###1#
#3##2#               #3###3#


我尝试计数并将表“ comments”中的评论数放入表“ news”中,但结果却是错误的。为什么?

UPDATE news JOIN comments ON news.id = comments.news_id SET
news.comm_num = ( SELECT COUNT( * )
FROM comments WHERE comments.news_id > 123)
WHERE news.id > 123


表'news'中的已评论新闻的'comments.news_id'='id'

我为特定情况写了一个可行的解决方案,但我不知道如何提出条件大于的请求。

UPDATE news a
SET comm_num = (SELECT COUNT(*)
                FROM comments c
                WHERE c.news_id = 123)
WHERE a.id = 123

最佳答案

只需使用相关的子查询:

UPDATE news n
    SET comm_num = (SELECT COUNT(*)
                    FROM comments c
                    WHERE c.news_id = n.id
                   ) ;


我不确定WHERE news.id > 123的条件是什么。

关于mysql - 如何在有条件的情况下将第一个表的行数添加到另一个表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53240063/

10-13 06:38