2017-03-15 29 views
0

我想選擇列的不同值,並使用附加子句,該值的多個行應滿足所有條件(其中包括)。當滿足其他列上的多個子句時,請選擇不同的列值

例如,在下表中我想說:「不同的Name其中key=1 AND value=2key=2 AND value=2」。

這應該只返回「有效」。 「invalid1」失敗,因爲儘管符合第一條標準,但其他行不符合其他條件。 「invalid2」失敗,因爲它既不符合標準。

id   Name  Key  Value 
====== ========= ==== =========== 
1   valid  1   2 
2   valid  2   2 
3   invalid1 1   2 
4   invalid2 1   3 

回答

3

使用group byhavinghaving中的條件被視爲布爾值,返回1表示爲真,0表示爲假。

select name 
from t 
group by name 
having sum(key=1 and value=2)=1 and sum(key=2 and value=2)=1 
+0

這樣做!有沒有辦法添加一個額外的可選「where」子句?即它滿足所有這些標準或「another_column = X」? – ganduG

+0

或者我不得不把它作爲一個單獨的查詢嗎? – ganduG

+0

更好地包含在'having'子句中。 –

相關問題