mysql - 如何计算基于 3 个表的 SQL

标签 mysql sql

我有三个表,我试图计算每个用户在他/她的所有帖子上的点赞数。

用户表

id  name    
1   John    
2   Joe 

帖子表

id  user_id     post_title
1   1           Some Title
2   1           Another Title
3   2           Yeah Title

点赞表

id  post_id 
1   1   
2   1   
3   1   
4   2   
5   3   

我的预期输出是

ID LIKES
1  4
2  1

我有点坚持下面的代码。我不知道如何添加和计算 likes 表。

SELECT *
FROM user
INNER JOIN posts
ON user.id = posts.user_id;

最佳答案

您需要将连接扩展到 LIKES 表,然后使用 GROUP BY 按用户 ID 和 COUNT() 该用户的所有记录进行分组。 ..

SELECT user.id, COUNT(likes.id)
    FROM user
    INNER JOIN posts ON user.id = posts.user_id
    INNER JOIN likes ON posts.id = likes.post_id
    GROUP BY user.id

如果你想列出没有帖子或喜欢的人,那么你应该使用外连接(因此将 INNER JOIN 更改为 LEFT JOIN)以便显示这些用户。

关于mysql - 如何计算基于 3 个表的 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57743985/

相关文章:

mysql - Spring JPA 无法更新名称包含连字符的 MySQL 数据库

mysql - 不允许我设置任何端口的监听器 (Oracle Netca)

php - 从任何给定的 Y-m-d 获取下个月的 Y-m-d 格式

javascript - 如何使用 sequelize 和 node 插入由多个对象组成的数组?

sql - MySQL 函数将 db 表中的值与以前的值进行比较

sql - 全文搜索用于提取文本片段(返回预期文本及其周围)

MySQL - 使用连接获取两个表上两组数据之间的差异?

php - 如何使用插入查询,其中一个值是子查询的结果

mysql - 我如何将另一个表与另一个表的主表连接起来

sql - 查找过去12小时的oracle记录