MySQL查询计数多个值

时间:2010-04-13 18:21:45

标签: mysql count group-by

考虑以下数据库表:

c     p
=========
1     'a'
1     'b'
2     'a'
2     'c'

现在,我的目标是检索一个数字列表c,其中包含此列表中的每个数字至少包含一个记录,其中p ='a'AND p ='b'。

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

现在我的问题是,如何使用一个MySQL查询来完成此任务?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

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