2010-03-01 40 views
3

我有一個兩列ID的表。如何爲以下選擇?

TABLE 
id1  id2 
1  1 
1  2 
1  3 
2  1 
2  6 
2  2 
3  1 
3  10 
3  3 

我想選擇每個id1匹配到id2s的某種組合。例如,如果我有id2 = [1,2,3],我想返回id1 = [1];如果我有id2 = [1,2,3],我想返回id1 = [1];

如果我有id2 = [1,6]我想返回id1 = [2];

如果我有id2 = [1],我想返回id1 = [1,2,3]。

有關如何最好地完成此任何建議將不勝感激。

感謝,

+0

爲什麼ID [1,6]僅返回[2]? – Patrick

+0

@Patrick只適用於id1 = 2相應的id2同時包含1和6. – kennytm

+0

@Patrick - 因爲2是id1具有id2值的唯一值1 AND 6 – Travis

回答

1

您可以搜索匹配ID2的,並使用count(distinct id2)驗證所有ID2的相匹配。計數應該等於id2的數量。對於ID2 = [1,2,3],則計應爲3:

select id1 
from YourTable 
where id2 in (1,2,3) 
group by id1 
having count(distinct id2) = 3; 

這將打印1.對於ID2 = [1,6]:

select id1 
from YourTable 
where id2 in (1,6) 
group by id1 
having count(distinct id2) = 2; 

這將打印2.對於ID2 = [1]:

select id1 
from YourTable 
where id2 in (1) 
group by id1 
having count(distinct id2) = 1; 

這將打印1,2,3

+0

非常感謝。這很好用。 – Travis

0

嘗試:

SELECT DISTINCT id1 
AS found_id1 
FROM table 
WHERE id2 IN (1, 2, 3) 

您將獲得:

DISTINCT id1 
-------- 
1 
+0

這不正確地打印1,2 ,3 – Andomar