我的表非常简单:
user_id,questionid,answerid(其余并不重要)
id | user_id | questionid | answerid
====+==========+============+=============
1 | 1 | 1 | 11
2 | 1 | 2 | 14
3 | 2 | 1 | 11
4 | 2 | 2 | 14
5 | 3 | 1 | 11
6 | 3 | 2 | 16
我需要一个与当前(指定)用户ID具有相同answerid的用户ID列表,从大多数相同的答案中排序。
基本上......与当前用户回答相同问题的用户列表......具有相同答案的数量。
列表应如下所示 - 对于userid(1):
所以Userid 2有2个与userid 1相同的答案 和Userid 3有1个与userid 1相同的答案
非常感谢......
答案 0 :(得分:0)
这基本上是所有用户和指定用户之间的left outer join
。如果连接成功,那么答案是相同的。
select qa.user_id, count(qau.id) as SameAnswers
from qa left outer join
qa qau
on qau.user_id = XXX and
qau.questionid = qa.questionid and
qau.answerid = qa.answerid
group by qa.user_id
order by SameAnswers desc;
请注意,除非所有用户都回答了相同的问题,否则这种相同答案数量的衡量标准不是很好的相似度量。