我有一个包含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.
答案 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)
。