Mysql 按相似兴趣对用户进行排序

Mysql 按相似兴趣对用户进行排序,mysql,Mysql,我有两张这样的桌子: 123|1|Football 123|2|Swimming 123|3|Skiing 456|2|Swimming ... User 1: 45 interests in common (and list them) User 2: 23 interests in common (...) User 3: 11 interests in common (...) 用户: 用户名|用户名| 兴趣: 用户|兴趣|兴趣|名称 例如,“兴趣”是这样填写的: 123|1|Foot

我有两张这样的桌子:

123|1|Football
123|2|Swimming
123|3|Skiing
456|2|Swimming
...
User 1: 45 interests in common (and list them)
User 2: 23 interests in common (...)
User 3: 11 interests in common (...)
用户:

用户名|用户名|

兴趣:

用户|兴趣|兴趣|名称

例如,“兴趣”是这样填写的:

123|1|Football
123|2|Swimming
123|3|Skiing
456|2|Swimming
...
User 1: 45 interests in common (and list them)
User 2: 23 interests in common (...)
User 3: 11 interests in common (...)
现在我(user_id 123)登录了,我想知道谁和我一样有最共同的兴趣(按降序排列)

结果应该是这样的:

123|1|Football
123|2|Swimming
123|3|Skiing
456|2|Swimming
...
User 1: 45 interests in common (and list them)
User 2: 23 interests in common (...)
User 3: 11 interests in common (...)
你知道怎么解决这个问题吗

我可能会先把我的兴趣读入一个数组,然后做一个循环什么的

谢谢

您可能需要一个计数(*)和分组依据

 select interests.user_id, interests.count(*) , users.user_name
 from  interests  
 inner join users on users.user_id = interests.user_id
 where interest_id in (select interest_id from interests where user_id = 123)
 group by interests.user_id, 
您可能需要一个计数(*)和分组依据

 select interests.user_id, interests.count(*) , users.user_name
 from  interests  
 inner join users on users.user_id = interests.user_id
 where interest_id in (select interest_id from interests where user_id = 123)
 group by interests.user_id, 

在我看来,您需要用户ID、计数和列表(兴趣\名称)

因此,我们只需要在兴趣ID上将兴趣加入到itslef中,然后通过“我的兴趣”(123)进行限制,并使用简单的聚合和一个组集合来获得列表

SELECT OI.User_ID
     , count(Distinct OI.Interest_ID) CommonInterestCount
     , Group_concat(OI.Interest_name) InterestList
FROM interests MyI
LEFT JOIN interests  OI
   on OI.Interest_ID = MyI.Interest_ID
WHERE MyI.user_ID = '123'
GROUP BY OI.user_ID

在我看来,您需要用户ID、计数和列表(兴趣\名称)

因此,我们只需要在兴趣ID上将兴趣加入到itslef中,然后通过“我的兴趣”(123)进行限制,并使用简单的聚合和一个组集合来获得列表

SELECT OI.User_ID
     , count(Distinct OI.Interest_ID) CommonInterestCount
     , Group_concat(OI.Interest_name) InterestList
FROM interests MyI
LEFT JOIN interests  OI
   on OI.Interest_ID = MyI.Interest_ID
WHERE MyI.user_ID = '123'
GROUP BY OI.user_ID

你试过什么?请阅读,这不是一个免费的编码、代码转换、教程或图书馆查找服务。你还必须表明你已经为解决自己的问题做出了一些努力。你尝试了什么?请阅读,所以这不是一个免费的编码或代码转换或教程或图书馆查找服务,你还必须表明你已经作出了一些努力,以解决自己的问题。