简体   繁体   English

如何编写具有两个左连接和两个计数的 MySql 查询

[英]How to write MySql query with two left joins and two counts

I have three tables posts,comments,likes and I want to fetch all posts with their amount of likes and comments I've tried this我有三个表帖子,评论,喜欢,我想获取所有帖子以及他们的喜欢和评论数量我试过这个

SELECT posts.id,COUNT(comments.postId) as num_of_comments,COUNT(likes.postId) as num_of_likes                                                                     
FROM posts
LEFT JOIN comments ON comments.postId = posts.id
LEFT JOIN likes ON likes.postId = posts.id
GROUP BY posts.id

You should use the left join for on the subquery with group by result您应该在按结果分组的子查询上使用左连接

select  posts.id, t1.num_of_comments, t2.num_of_likes
from posts
leftjoin (
  select comments.postId, COUNT(*) as num_of_comments
  from comments 
  group by comments.postId
) t1 on t1.postId = posts.id
leftjoin (
  select likes.postId, COUNT(*) as num_of_likes
  from likes
  group by likes.postId
) t2 on t2.postId = posts.id

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM