我有2个表,如下所示:
表1包含UserID
和Name
,而表2包含UserID
,Skill_ID
和SkillName
我想要做的是,我想通过SkillName搜索拥有2项技能的人。
示例:我将 Andy 作为Name
,他有2个技能 PHP 和 C#所以当我搜索 PHP & C#,Andy将显示为结果。
任何人都可以帮助我吗?谢谢。
答案 0 :(得分:0)
SELECT a.Name
FROM table1 a
INNER JOIN table2 b
ON a.userID = b.user_ID
WHERE b.skill_name IN ('PHP','C#')
GROUP BY a.Name
HAVING COUNT(*) = 2
您桌子的设计没有很好地规范化。关系类型为Many-to-Many
,在这种情况下,这应该是三个表,Users
,Skills
和链接表User_Skills
。
建议的设计是:
表User
表Skills
表User_Skills