2013-04-04 91 views
0

在一個表中我有記錄行找到不同的值如下:Mysql的從另一個字段匹配多個值

ID, ID1, ID2 
1, 2, 3 
2, 2, 4 
3, 2, 5 
4, 3, 3 
4, 3, 4 
4, 4, 3 
4, 4, 4 
4, 4, 5 

我希望能夠找到所有ID1值存在於表裏面有所有的因此在這種情況下,我希望某些SQL只能抽出ID1 = 2和ID1 = 4,但不能抽取ID1 = 3,因爲只存在ID2 = 3和ID2 = 4,因此ID2 = 3和ID2 = 4 ID1 = 3 ...所以它缺少一行ID2 = 5,因此我不希望它包含在我的結果集中。

有沒有一種有效的方法來做到這一點?

TY!

+0

你能清楚嗎?提供您需要的示例輸出 – Santhosh 2013-04-04 11:47:36

回答

3

你會想使用一種與3,4或5的值選擇具有一個id2所有行,然後下面用having子句應用於一組,以確保您返回3個不同的id2值:

select id1 
from yourtable 
where id2 in (3, 4, 5) 
group by id1 
having count(distinct id2) = 3 

請參閱SQL Fiddle with Demo

這種類型的查詢被稱爲relational division

+1

完美工作,謝謝。 – Claud 2013-04-04 12:47:41

相關問題