SQL查询按喜欢/不喜欢比较用户

时间:2018-06-28 02:05:49

标签: mysql sql relational-database

我正在寻找一些术语或指示,而不是有人编写查询。但是我不知道要问什么问题,或者要研究什么术语。

所以我有一个表,我们称它为reactions,它包含三列:用户,post_id和响应:

user | post_id | reaction
1    | 23      | 1
1    | 24      | 0
2    | 15      | 0
3    | 16      | 0
4    | 17      | 1
3    | 14      | 0
2    | 23      | 1
2    | 12      | 1
1    | 17      | 0

我该如何选择一个对给定用户的常见帖子反应最强烈的用户?

例如,如果知道用户#5对发布“ 12”的反应为“ 1”,而对发布“ 15”的反应为“ 0”,那么我将发现他与用户2具有可比性这两个数据点。

当然,随着更多用户对更多帖子的反应,这将变得更加复杂,我将不得不根据用户之间的反应程度对它们进行排序。

无论如何,非常感谢您的阅读,对于在何处阅读有关内容的任何帮助,将不胜感激!

1 个答案:

答案 0 :(得分:2)

您可以使用自连接来统计共同反应的数量

select r.user, count(*)
from reactions r join
     reactions r2
     on r.post_id = r2.post_id and r.reaction = r2.reaction
where r2.user = @user
group by r.user
order by count(*) desc;