Mysql 如何在SQL中选择与表中所有属性匹配的项?
我有一个包含区域列表的表(区域)Mysql 如何在SQL中选择与表中所有属性匹配的项?,mysql,sql,count,distinct,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**
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
我想在areas表中找到所有区域都与之关联的所有名称。对于上面的示例数据,我将得到输出Bob
我当前的查询返回教授areas表中任何区域的人员的姓名
SELECT DISTINCT PersonName
FROM People, Areas
WHERE Areas.Area = People.Area
鲍勃,亨德里克斯,吉米
如何更改此选项以仅选择Bob,Bob拥有与他相关的所有三个区域?您可以使用
分组方式和拥有。假设人员
表中的所有区域都有效:
select p.personname
from people p
group by p.personname
having count(distinct area) = (select count(distinct area) from areas);
如果您知道一个人没有重复的区域,并且区域中也没有重复的区域
,那么您可以用count()替换count(distinct)
,谢谢您的回复!然而,这对我不起作用。它返回了一个区域数与区域表中区域数完全相同的所有人员的列表,但没有检查他们是否都相等。@Duffluc。您是说人员
表中的某些区域不在区域
中吗?