如何选择与SQL中的表中的所有属性匹配的项?

时间:2015-10-23 21:03:33

标签: mysql sql count distinct

我有一个包含区域列表的表(区域)。

**Area**
Area 1
Area 2
Area 3

然后,我有另一个表(人物),其中包含名称和区域列表。

**PersonName**     **Area**
Bob                Area 1
Dylan              Area 4
Jimi               Area 6
Hendrix            Area 2
Bob                Area 3
Bob                Area 2
Jimi               Area 3

我想找到与Regions关联的所有区域的所有名称。因此,对于上面的示例数据,我会得到输出Bob。

我当前的查询返回教授区域表中任何区域的人员的姓名。

SELECT DISTINCT PersonName
FROM People, Areas
WHERE Areas.Area = People.Area

返回Bob,Hendrix,Jimi

如何更改此选项以仅选择与他有关的所有三个区域的Bob?

1 个答案:

答案 0 :(得分:0)

您可以使用group byhaving。假设People表中的所有区域都有效:

select p.personname
from people p
group by p.personname
having count(distinct area) = (select count(distinct area) from areas);

如果您知道某个人没有重复区域且areas中没有重复区域,那么您可以将count(distinct)替换为count()