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