我的表格格式如下
> id username interest_ids
> 1 Ram 1,2,3
> 2 Suja 2,3,
> 3 Rahul 2,4,5,6
> 4 nipa 1,4,6
id name
1 Music
2 Book
3 News
4 T.V watching
5 Song
6 Dancing
7 Game
现在我想搜索有相同兴趣的用户。
示例Nipa
是兴趣ID为1,4,6
的用户
和兴趣ID与用户Ram (id 1)and Rahul(id 3)
什么是mysql查询,以便我可以获取具有类似nipa感兴趣ID的用户。
答案 0 :(得分:0)
如果您的表格已正确归一化(它们应该是这样!做到了!)并且您有一个user_interests表,如下所示:
create table user_interests (
user_id integer,
interest_id integer
);
然后你的回答是:
select distinct username
from users u
inner join user_interests ui
on u.id = ui.user_id
where ui.interest_id in
(select ui2.interest_id
from users u2
inner join user_interests ui2
on u2.id = ui2.user_id
where u2.username = 'Nipa'
)
and u.user_name <> 'Nipa'
按照目前的情况,mysql不会花费很多精力来分割字符串,这样可以更好地修复表格。