SQL - 选择所有技能

ian*_*naz 4 sql

自从我使用SQL以来已经有一段时间了,所以我很抱歉,这太容易了.我必须选择用户拥有的所有技能,所以我有三张桌子.

User (id, name)
Skills (id, name)
User_skills (id_user, id_skill)
Run Code Online (Sandbox Code Playgroud)

如果user1有2个技能; 例如Hibernate(id 1)和Java(id 2)以及user2拥有1个技能; Java(id 1)
传递12,我想检索具有这两者的用户.

使用IN()函数,我得到所有具有至少一种技能的用户,但我想过滤掉它们!
感谢所有提前

a_h*_*ame 8

如果一个技能只能为用户分配一次(即(id_user,id_skill)是user_skills表的PK),那么以下将执行您想要的操作:

SELECT id_user
FROM user_skills
WHERE id_skill IN (1,2)
GROUP BY id_user
HAVING count(*) = 2
Run Code Online (Sandbox Code Playgroud)