想进一步过滤掉以下的mysql结果集

时间:2012-06-05 13:36:37

标签: mysql sql filter resultset

我的记录如下: 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的位置。我想过滤掉这些记录。这样我就可以获得支持搜索所有三种服务的所有位置。

此外,记录还有多个提供商处理(相同或不同)服务的位置。

1 个答案:

答案 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。