要进一步筛选出以下mysql结果集吗

要进一步筛选出以下mysql结果集吗,mysql,sql,filter,resultset,Mysql,Sql,Filter,Resultset,我得到的记录如下: 提供商_id位置_id |服务_id 21 | 42 | 387 32 | 42 | 387 23 | 42 | 397 45 | 42 | 397 25 | 42 | 700 25 | 53 | 397 27 | 53 | 700 我想进一步过滤掉这个,如下所示。我查询了服务id 387397和700,并根据这些信息获取了记录 但我希望每个位置的所有三个服务ID 387、397和700都必须在那里。现在我得到了一个或两个服务ID的位置。我想过滤掉这些记录。因此,我将获得所有

我得到的记录如下: 提供商_id位置_id |服务_id

21 | 42 | 387

32 | 42 | 387

23 | 42 | 397

45 | 42 | 397

25 | 42 | 700

25 | 53 | 397

27 | 53 | 700

我想进一步过滤掉这个,如下所示。我查询了服务id 387397和700,并根据这些信息获取了记录

但我希望每个位置的所有三个服务ID 387、397和700都必须在那里。现在我得到了一个或两个服务ID的位置。我想过滤掉这些记录。因此,我将获得所有支持搜索的所有三项服务的位置


此外,record还有多个提供商在(相同或不同)位置为服务工作。

以下查询满足您的要求:

select location, count(distinct serviceid) as numserviceids
from t
where serviceid in (387, 397, 700)
having count(distinct serviceid) = 3

它选择您要查找的服务ID。然后,它按位置对它们进行分组,计算每个位置的服务ID数量,并仅返回所有三个ID的ID。

这将获取每个服务出现3次的记录或记录。但我不想这样。这会过滤具有三个不同服务ID的位置,而您正在查找具有这三个ID的位置。我就是这样理解你原来的问题的。您了解COUNT()和COUNT(DISTINCT)之间的区别吗?