2014-01-21 79 views
0

我的表是非常簡單的:MYSQL - 選擇用戶與特定用戶最重複的記錄

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列表誰擁有與當前(指定)用戶ID相同的答案,並從大多數相同的答案中排序。

基本上...與當前用戶回答相同問題的用戶列表......相同答案的數量。

名單應該像 - 爲用戶ID(1):

  • 用戶ID(2) - 2
  • 用戶ID(3) - 1

所以用戶標識2有2個相同答案用戶ID 1 和用戶ID 3具有1個相同的答案的用戶ID 1

謝謝了...

回答

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; 

需要注意的是這一措施同樣答案的數量是不相似的一個很好的措施,除非所有的用戶都回答同樣的問題。

+0

謝謝,但實際上,他們當然不會回答同樣的問題... –

+0

@HelFrozeOver。 。 。這回答你的問題。我的評論只是對這項措施有用的判斷。 –

+0

你的方法比解決方案更好: 從'#__ test'中選擇A.user_id,count(A.answerid)作爲match_cnt作爲連接(從'#__ test'選擇user_id,answerid,其中user_id (A.answerid = B.answerid AND A.user_id <> B.user_id)group by A.user_id order by match_cnt DESC –