假设我有一个带有以下条目的ASOC类型表:

+----------+----------+
| PERSON   | SKILL    |
+----------+----------+
| Bob      | Java     |
| Bob      | Database |
| Sarah    | Java     |
| Sarah    | HTML     |
| Jane     | Java     |
| Jane     | HTML     |
| Jane     | Database |
+----------+----------+


我想要一个查询,该查询将返回同时具有Java和数据库技能的人员列表,即Bob和Jane。

如果我运行类似的查询:

SELECT PERSON
FROM   PERSON_SKILLS_ASOC
WHERE  SKILL = 'Java'
OR     SKILL = 'Database'


我也将得到Sarah,她没有资格担任我要填补的职位。我需要做某种联合/交叉查询吗?

我在使用MySQL。提前致谢。

最佳答案

select a.person
from (select person from person_skills_asoc where skill = 'Java') a
     (select person from person_skills_asoc where skill = 'Database') b
where a.person = b.person;


要么

select a.person
from person_skills_asoc a, person_skills_asoc b
where a.person = b.person
  and a.skill = 'Java'
  and b.skill = 'Database';

关于mysql - 检索具有多个关联条目的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17491875/

10-12 12:52
查看更多