Mysql 在多行上使用多个IN子句进行查询

Mysql 在多行上使用多个IN子句进行查询,mysql,sql,Mysql,Sql,假设我有这张桌子: | ID | idService | | 1 | 5 | | 1 | 10 | | 2 | 5 | | 2 | 15 | | 3 | 5 | | 3 | 20 | | 4 | 5 | | 4 | 25 | 我希望能够选择产品5与其他产品10、15、20、25中至少一种存在的所有c

假设我有这张桌子: | ID | idService | | 1 | 5 | | 1 | 10 | | 2 | 5 | | 2 | 15 | | 3 | 5 | | 3 | 20 | | 4 | 5 | | 4 | 25 | 我希望能够选择产品5与其他产品10、15、20、25中至少一种存在的所有clientsID

我可以通过查询对其中一个组合执行此操作:

从表中选择ID,其中idService在5,10组中,ID为COUNTDISTINCT idService=2

但是,如果我在这个查询中添加其他条件,我将得到至少有两个产品的所有客户机,不管是5加10还是10加20

从表中选择ID,其中idService IN 5,10或idService IN 5,15或idService IN 5,20或idService IN 5,25组的ID具有COUNTDISTINCT idService=2

我想知道是否有可能更改IN子句或替换它们,以便只获得具有四种有效组合之一的客户机

编辑:

我已经能够使用子查询使查询工作


从表中选择ID,其中ID位于从表中选择ID,其中idService=5和idService=10或idService=15或idService=20或idService=25按idSPOrder分组。这不会只为我提供具有服务5的客户端吗?我看不出我将在何处指定它需要与其他4个服务中的一个一起使用。where子句表示获取具有服务5的ID group by表示将它们组合在一起,having count*>=2部分表示确保它具有多个1,这意味着这里有5个,至少多了1个。运行它,你应该会得到正确的结果。哦,我明白了。我可能应该说明除了上面列出的产品之外,我还有其他产品。如果我只有表中列出的产品,那就可以了。我的缺点是不清楚。这不会让我的客户只提供服务5吗?我看不出我将在何处指定它需要与其他4个服务中的一个一起使用。where子句表示获取具有服务5的ID group by表示将它们组合在一起,having count*>=2部分表示确保它具有多个1,这意味着这里有5个,至少多了1个。运行它,你应该会得到正确的结果。哦,我明白了。我可能应该说明除了上面列出的产品之外,我还有其他产品。如果我只有表中列出的产品,那就可以了。我不清楚,这是我的错。这是一个连接。这里的第一个表是“table”,第二个表是别名为“t”的嵌套select查询。连接条件是table.id=t.id。它是一个连接。这里的第一个表是“table”,第二个表是别名为“t”的嵌套select查询。联接条件为table.id=t.id。
select Id 
from Table T
where exists (select 1 from Table where Id = T.Id AND idService = 5)
group by Id
having count(*) >= 2
select table.id from table, 
(select id from table where idservice != 5 group by id)t 
where idservice = 5 and table.id = t.id
select distinct ID from table t1
where (select count(*) from table where ID = t1.ID group by ID) >=2
and (select count(*) from table where Idservice = 5 and ID = t1.ID group by ID) > 0