MYSQL - 选择具有特定用户的最多重复记录的用户

时间:2014-01-21 18:32:54

标签: mysql count duplicates distinct

我的表非常简单:

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(3) - 1

所以Userid 2有2个与userid 1相同的答案 和Userid 3有1个与userid 1相同的答案

非常感谢......

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;

请注意,除非所有用户都回答了相同的问题,否则这种相同答案数量的衡量标准不是很好的相似度量。