SQL 查询比较用户 likes/dislikes

SQL Query to compare users by likes/dislikes

我正在寻找一些术语或相关方向,而不是编写查询的人。但是我不知道要问什么问题,或者要研究什么行话。

所以我有一个 table,我们称它为 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

我将如何选择对 post 与给定用户共同的反应最多的用户?

例如,如果知道用户 #5 对 post“12”的反应是“1”,对 post“15”的反应是“0”,那么我会发现他具有可比性对于对这两个数据点做出相同反应的用户 #2。

当然,随着更多用户对更多 post 的反应,这会变得更加复杂,我将不得不根据用户之间反应的一致性对它们进行排序。

无论如何,非常感谢您的阅读,如果您能提供有关在哪里阅读的帮助,我们将不胜感激!

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

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;