Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何在SQL中选择与表中所有属性匹配的项?_Mysql_Sql_Count_Distinct - Fatal编程技术网

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。您是说
人员
表中的某些区域不在
区域
中吗?