我有一个包含区域列表的表(区域)。
**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?
答案 0 :(得分:0)
您可以使用group by
和having
。假设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()
。