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