2011-06-05 30 views
5

我試圖找到一個查詢,選擇關聯表的每一行,其中第二列表示必須全部與第一列匹配的不同值。MySQL查詢等價於「AND」,而「IN」是「OR」?

示例:我有列X和Y.我想要獲取X的值,其中X是用指定的每個Y定義的。

x y 
====== 
a 1 
a 2 
b 1 
a 3 
c 2 
c 3 

SELECT DISTINCT x FROM table WHERE y AND (2, 3)

這當然查詢無效。我希望得到ac莫名其妙。

因爲我也試圖更好地學習MySQL查詢,所以如果能提供一個答案,可以給出解答背後邏輯的解釋,我將不勝感激。謝謝! :)

+0

爲什麼不能使用'WHERE ... IN()'? – Midas 2011-06-05 16:52:37

+0

您的輸入集不明確。假設一個額外的行(x ='d',y = 3) - 是您的查詢返回的行嗎? – 2011-06-05 16:53:00

+1

他的意思是說,他希望那些'x'的值在_both_ 2和3出現在'y'中。 – Alnitak 2011-06-05 16:55:25

回答

11

我希望這是你在找什麼。如果你確認了,我會向你解釋這個問題。

select x 
from table 
where y in (2,3) 
group by x 
having count(distinct(y)) = 2 
+0

也許這是我需要的,但由於某種原因,我沒有從我的測試表中得到任何結果。 – Lazlo 2011-06-05 17:15:06

+0

我已經用你的例子給你寫了查詢:( – 2011-06-05 17:17:52

+0

其實,我收回了我說的話,我得到了完全相同的表格的結果,只是不是我用的真實表格,讓我試試更多 – Lazlo 2011-06-05 17:19:19