mysql查询查找集合哪个元素与另一个集合元素

时间:2015-05-20 10:34:44

标签: mysql

我的表格格式如下

用户表

> 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的用户。

1 个答案:

答案 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不会花费很多精力来分割字符串,这样可以更好地修复表格。

Here's an example