在一个表上搜索多个参数查询

时间:2013-02-01 16:57:56

标签: mysql

我有2个表,如下所示:

表1包含UserIDName,而表2包含UserIDSkill_IDSkillName

我想要做的是,我想通过SkillName搜索拥有2项技能的人。

示例:我将 Andy 作为Name,他有2个技能 PHP C#所以当我搜索 PHP & C#,Andy将显示为结果。

任何人都可以帮助我吗?谢谢。

1 个答案:

答案 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,在这种情况下,这应该是三个表,UsersSkills和链接表User_Skills

建议的设计是:

User

  • UserID(PK)
  • 名称

Skills

  • SkillID(PK)
  • SkillName

User_Skills

  • UserID(FK)
  • SkillID(FK)