mysql - 如何编写具有两个左连接和两个计数的 MySql 查询
问题描述
我有三个表帖子,评论,喜欢,我想获取所有帖子以及他们的喜欢和评论数量我试过这个
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
解决方案
您应该在按结果分组的子查询上使用左连接
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
推荐阅读
- php - laravel faker 重复数据
- java - 来自 Firebase 事件监听器的 Java 异步更新
- android - 创建警报对话框并发出通知会出现错误:无法添加窗口
- scala - sbt 0.13.16 - 如何自定义触发执行(文件监视)
- python - 多项式内核不是PSD?
- git - 无法推送到 sourcetree 上的分支
- linux - 是否可以将两个 tr 命令合并为一个?
- visual-studio - 如何将项目添加到团队项目?
- python - Docker 容器中的 Jupyter 笔记本不持久?
- javascript - 错误 TS2356 说数字类型变量必须是“数字”类型的算术操作数