Mysql 从另一个表计数的SQL

Mysql 从另一个表计数的SQL,mysql,sql,select,count,Mysql,Sql,Select,Count,我正在为一个社交网络管理一个数据库,在那里用户可以喜欢、评论,我为每个帖子、喜欢和评论创建了一个表 like --- post_id user_id comment --- post_id user_id 现在,当我运行select*from post时,我希望能够添加两列likes和comments,计算每个post\u id的like和comments的数量 我如何才能做到这一点?您将需要连接到两个表 SELECT post.*, COUNT(l

我正在为一个社交网络管理一个数据库,在那里用户可以喜欢、评论,我为每个帖子、喜欢和评论创建了一个表

like --- post_id
         user_id

comment --- post_id
            user_id
现在,当我运行
select*from post
时,我希望能够添加两列
likes
comments
,计算每个
post\u id
的like和comments的数量


我如何才能做到这一点?

您将需要连接到两个表

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
像这样:

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


这就像修改
select
的答案一样,因为
groupby
中的列必须在
select
子句中。

在SQL Server下,我同意-但是,MySQL对GROUPBY中的所有select字段的命名没有那么严格。你可以按主键分组,但仍然可以从表中选择*哦,我不知道。评论不错。
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
SELECT post.id, COUNT(like.id) AS like_count, COUNT(comment.id) AS comment_count
FROM post p
    LEFT JOIN like ON post.id = like.post_id
    LEFT JOIN comment ON post.id = comment.post_id
GROUP BY post.id