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

标签 mysql sql filter resultset

我得到的记录如下: 供应商 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/

相关文章:

mysql - 即使foreign_key_checks = 0,删除带有外键的表也会失败

c# - ASP.NET ObjectDataSource 找不到具有参数的非泛型方法

ajax - Woocommerce Ajax 过滤 - 通过范围 slider 的产品属性

php从所有行的同一列中获取特定数据

mysql - InnoDB导致无法重启MySQL

c# - 收到错误 "System.IndexOutOfRangeException"。为什么?

Javascript - 根据其他 json 值过滤 geojson

r - 如何从一个 data.table 中删除另一个 data.table 中指定的组组合 [R]

php - 空格作为第一个字符

sql - 数据库表设计-邮件类型的不同状态