MySQL查询统计多个值

MySQL查询统计多个值,mysql,count,group-by,Mysql,Count,Group By,考虑以下DB表: c p ========= 1 'a' 1 'b' 2 'a' 2 'c' 现在,我的目标是检索一个数字c的列表,对于该列表,该列表中的每个数字都至少有一个p='a'和p='b'的记录 在上面的示例表中,这将是c=1 现在我的问题是,如何使用一个MySQL查询来实现这一点 select t1.c from MyTable t1 inner join MyTable t2 on t1.c = t2.c where t1.p = 'a' a

考虑以下DB表:

c     p
=========
1     'a'
1     'b'
2     'a'
2     'c'
现在,我的目标是检索一个数字c的列表,对于该列表,该列表中的每个数字都至少有一个p='a'和p='b'的记录

在上面的示例表中,这将是c=1

现在我的问题是,如何使用一个MySQL查询来实现这一点

select t1.c
from MyTable t1
inner join MyTable t2 on t1.c = t2.c
where t1.p = 'a' and t2.p = 'b'
更新:

select c
from MyTable 
where p in ('a', 'b', 'c', 'd')
group by c
having count(distinct p) = 4
更新:

select c
from MyTable 
where p in ('a', 'b', 'c', 'd')
group by c
having count(distinct p) = 4

根据数据遵循的规则(如果有),有不同的方法来解决问题。如果不了解您的问题,我会:

SELECT t1.c FROM table t1 INNER JOIN table t2
  ON t1.c = t2.c
  WHERE t1.p = 'a' AND t2.p = 'b'

根据数据遵循的规则(如果有),有不同的方法来解决问题。如果不了解您的问题,我会:

SELECT t1.c FROM table t1 INNER JOIN table t2
  ON t1.c = t2.c
  WHERE t1.p = 'a' AND t2.p = 'b'

现在,如果问题是p='A'和p='B'以及p='C'呢。或者更好,p在['A','B','C',…]中的任何一个?现在,如果问题是p='A',p='B'和p='C'。或者更好,p在[A','B','C',…]中的任何一个?