从另一个表计数的SQL

use*_*694 4 mysql sql select count

我正在管理用户可以喜欢的社交网络数据库,评论并为帖子创建了一个表格,例如和评论.

like --- post_id
         user_id

comment --- post_id
            user_id
Run Code Online (Sandbox Code Playgroud)

现在,当我运行时select * from post,我希望能够添加两列,likescomments计算每个列的喜欢和评论的数量post_id.

我怎样才能做到这一点?

Ric*_*ard 5

您需要加入两个表.

SELECT post.*, COUNT(likes.id) AS like_count, COUNT(comment.id) AS comment_count
FROM post
    LEFT JOIN likes ON post.id = likes.post_id
    LEFT JOIN comment ON post.id = comment.post_id
GROUP BY post.id
Run Code Online (Sandbox Code Playgroud)


das*_*ght 5

像这样:

SELECT *
,    (SELECT COUNT(*) FROM likes WHERE post_id=p.id) as LIKE_COUNT
,    (SELECT COUNT(*) FROM comment WHERE post_id=p.id) as COMMENT_COUNT
FROM post p
Run Code Online (Sandbox Code Playgroud)

在sqlfiddle上演示.