微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MySQL查询以获取所有用户看到的帖子

如何解决MySQL查询以获取所有用户看到的帖子

我需要获取MysqL 数据库看到的所有用户包含用户、帖子和 users_seen_posts 表的帖子。

users_seen_posts 表:

id |  user_id  | post_id  | 
---------------------------
 1 |  xxxxx4   | xxxxx1   |
 2 |  xxxxx3   | xxxxx6   |

解决方法

这种类型的查询称为“关系划分”。 SQL 中有几种方法可以解决它,但它有点不常见,所以 SQL 中的所有方法都有点笨拙。

这是一种解决方案,它将所有用户的计数与在 users_seen_posts 表中找到的不同 user_id 的计数进行比较:

SELECT s.post_id
FROM users AS u
LEFT OUTER JOIN users_seen_posts AS s ON u.id = s.user_id
GROUP BY s.post_id
HAVING COUNT(*) = COUNT(DISTINCT s.user_id)

如果计数相等,则意味着每个用户都代表给定帖子,因此所有用户都看过该帖子。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。