0
考慮下面的數據庫表:MySQL查詢計數多個值
c p
=========
1 'a'
1 'b'
2 'a'
2 'c'
現在,我的目標是獲取數字℃的名單,對於其中認爲在這個列表中的每個號至少有p紀錄='a'和p ='b'。
在上面的示例表中,這將是c = 1。
現在我的問題是,我如何使用一個MySQL查詢來完成此操作?
考慮下面的數據庫表:MySQL查詢計數多個值
c p
=========
1 'a'
1 'b'
2 'a'
2 '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 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'AND p ='C',會怎麼樣。或者甚至更好,['A','B','C',...]中的任何一個? – Sqlclown 2010-04-13 18:29:29
@Sqlclown:看我的更新 – RedFilter 2010-04-13 18:38:20