2010-04-13 50 views
0

考慮下面的數據庫表:MySQL查詢計數多個值

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

現在,我的目標是獲取數字℃的名單,對於其中認爲在這個列表中的每個號至少有p紀錄='a'和p ='b'。

在上面的示例表中,這將是c = 1。

現在我的問題是,我如何使用一個MySQL查詢來完成此操作?

回答

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 
+0

現在,如果問題是p ='A'和p ='B'AND p ='C',會怎麼樣。或者甚至更好,['A','B','C',...]中的任何一個? – Sqlclown 2010-04-13 18:29:29

+0

@Sqlclown:看我的更新 – RedFilter 2010-04-13 18:38:20

1

有不同的方式來攻擊這取決於你的數據如下,如果任何規則的問題。不知道更多關於你的問題,我會這樣做:

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