我得到的记录如下: 供应商 ID 位置 ID |服务ID
21 | 42 | 42第387章
32 | 42 | 42第387章
23 | 42 | 42第397章
45 | 42 | 42第397章
25 | 42 | 42 700
25 | 53 | 53第397章
27 | 53 | 53 700
我想进一步过滤掉这个,如下所示。我查询了 service_id 387,397 和 700 并据此获取记录。
但我希望每个位置的所有三个 service_ids 387、397 和 700 都必须在那里。现在我正在获取具有 1 或 2 个 service_ids 的位置。我想过滤掉这些记录。这样我就可以获得支持已进行搜索的所有三种服务的所有位置。
还记录有多个提供商在(相同或不同)位置提供服务。
最佳答案
以下查询可以实现我认为您想要的功能:
select location, count(distinct serviceid) as numserviceids
from t
where serviceid in (387, 397, 700)
having count(distinct serviceid) = 3
它选择您正在寻找的服务 ID。然后,它按位置对它们进行分组,计算每个位置的服务 ID 数量,并仅返回同时拥有这三个位置的服务 ID。
关于mysql - 想要进一步过滤掉以下 mysql 结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10898364/