我的记录如下: provider_id location_id |的service_id
21 | 42 | 387
32 | 42 | 387
23 | 42 | 397
45 | 42 | 397
25 | 42 | 700
25 | 53 | 397
27 | 53 | 700
我想进一步过滤如下。我查询了service_id 387,397和700并按此获取记录。
但我希望每个位置都有三个service_ids 387,397和700。现在我获得了1或2个service_ids的位置。我想过滤掉这些记录。这样我就可以获得支持搜索所有三种服务的所有位置。
此外,记录还有多个提供商处理(相同或不同)服务的位置。
答案 0 :(得分:1)
以下查询执行我认为您想要的内容:
select location, count(distinct serviceid) as numserviceids
from t
where serviceid in (387, 397, 700)
having count(distinct serviceid) = 3
选择您要查找的服务ID。然后它按位置对它们进行分组,计算每个位置的服务ID数量,并仅返回具有全部三个位置的服务ID。