如何用户mysql IN查询和条件一样

时间:2015-03-10 14:52:27

标签: mysql sql

我有一个包含2列user_id,skills_id的表。用户具有新行的多种技能。我必须找到那些具有相同技能的用户。

user_id skills_id
      1         6
     10         5
     11         2
     11         3
     15         2
     15         4
     15         3
     17         2
     18         2
     18         3
     18         4
     20         2 <-- I have to find users who have values of both 2 and 4 for skill_id. 
     20         4 <-- So user 15 in this example.

2 个答案:

答案 0 :(得分:1)

尝试这个未经测试的查询:

Select user_id from `table` where skills_id in (2,4) group by user_id having count(*) =2

答案 1 :(得分:1)

您需要找到具有相同技能的其他用户。假设技能不重复,这里有一种方法:

select t.user_id
from table t join
     table t2
     on t.skills_id = t2.skills_id and
        t2.user_id = 20
group by t.user_id
having count(*) = (select count(*) from table t3 where t3.user_id = 20);

请注意,这将返回用户20和用户15.如果您愿意,可以将其过滤掉。

如果可以为用户复制技能,则只需使用count(distinct)